2017-12-27 11 views
0

.csvファイルを見つけるのに問題があります。自分のAndroidデバイスをコンピュータに接続すると、ファイルエクスプローラに作成して書き込みます。私のアプリケーションが作成している外部ディレクトリのファイルが見つかりません

私はそうのように、私のマニフェストでWRITE_EXTERNAL_STORAGEをしている:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

私は私のメインの活動では、この機能を使用してファイルに書いています:

public void exportDatabase() { 
    File folder = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) 
      + "/Folder"); 
    boolean var = false; 
    if (!folder.exists()) { 
     Log.d(EXPORT_DATA_TAG, "Folder does not exist"); 
     var = folder.mkdir(); 
     Log.d(EXPORT_DATA_TAG, "mkdir() success? " + var); 
    } 

    CharSequence contentTitle = getString(R.string.app_name); 
    final ProgressDialog progDailog = ProgressDialog.show(
      this, contentTitle, "Exporting data...", 
      true); 
    final Handler handler = new Handler() { 
     @Override 
     public void handleMessage(Message msg) { 
     } 
    }; 
    final String filename = folder.toString() + "/" + "LeadCapture.csv"; 
    Log.d(EXPORT_DATA_TAG,"Writing data to file: " + filename); 
    new Thread() { 
     public void run() { 
      boolean success = writeData(filename); 
      if (success) { 
       handler.sendEmptyMessage(0); 
       Log.d(EXPORT_DATA_TAG,"Write successful to .csv"); 
      } else { 
       Log.d(EXPORT_DATA_TAG,"Failed to write to .csv"); 
      } 
      progDailog.dismiss(); 
     } 
    }.start(); 
} 

これは、書き込み関数を呼び出します私のデータベースヘルパークラス:

Logcatは、ファイルが正常に/storage/sdcard1/Download/Folder/LeadCapture.csvに書き込まれていると言いますが、ダウンロードフォルダまたはどこかでフォルダまたはファイルを見つけることができません。

私は、これは、このパス/storage/sdcard1/Folder/LeadCapture.csvになり

File folder = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)

File folder = new File(Environment.getExternalStorageDirectory())

に変更しようとしているが、私はまだそこにファイルを見つけることができません。私は非常に混乱しています。なぜなら、この問題に関する他の多くの質問では、ファイルパスを知らない、または内部メモリへの書き込みではなく、 WRITE_EXTERNAL_STORAGEの許可がないという問題がありました。理論的には、私のwriteFunction()が正しくないとしても、少なくとも私が見ることができる空のディレクトリを作成する必要があります。何か案は?

+1

https://stackoverflow.com/questions/32789157/how-to-write-files-to-外部の公共のストレージでは、それは彼らがそうですか? – CommonsWare

+0

あなたはあなたに読書許可を与えましたか? – ABDevelopers

+0

'var = folder.mkdir()' mkdirs()が失敗すると続行しないでください。より良い: 'if(!folder.mkdir()){Toast(...); return;} '。そして、ファイルを作成できないと不平を言うことはありません。しかし、ディレクトリ。 – greenapps

答えて

0

他の誰かがこの問題を抱えている場合:デバイスにファイルが作成されてから表示されるまでの間に遅延があります。 MediaScannerは新しいファイルをスキャンして表示する必要があり、頻繁に実行されるのはデバイスがリセットされたときだけです。私は、ファイルを書いて行われていたとして、私は、すぐにメディアスキャンをトリガーするために私のアプリに次を追加しました:

   String[] files = { filename }; 
       MediaScannerConnection.scanFile(getApplicationContext(), files, null, null);