2016-06-23 7 views
1

非常に具体的な問題があります。Asus Nexus 7の外部ストレージに書き込もうとしていますが、デバイスのエミュレートされたディレクトリに書き込みます。ここでAndroid:Asus Nexus 7は再起動するまでエミュレートされたメモリをコミットしません

は、私が使用していたコードです:私は、デバイスを再起動するたびに差し込まれたときに

public static void writeExternalMedia(Context context) { 
    if(isExternalStorageWritable()) { 
     String content = "hello world"; 

     File filedir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + "/test"); 
     filedir.mkdir(); 

     File file; 

     FileOutputStream outputStream; 

     try { 
      file = new File(filedir, "test.txt"); 

      if (!file.exists()) { 
       file.createNewFile(); 
      } 

      outputStream = new FileOutputStream(file); 
      outputStream.write(content.getBytes()); 
      outputStream.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
} 

、ディレクトリは、私は上記の関数が実行されます時に起こることを期待するものですこれは、デバイスの下に表示されます。

私は解決策を探してみましたが、私の質問に対する答えを見つけることができません。

+0

私はそれがこれと同じであると確信しています:http://stackoverflow.com/questions/37946892/files-copied-by-my-app-not-showing-up-on-pc – Budius

+0

私はその方法論を利用しました残念ながらそれはうまくいかなかった。しかし、努力をいただきありがとうございます! – eplewis89

答えて

1

2つの方法を作成しました。 1つはファイルを作成するためのもので、もう1つはファイルに追加するためのものです。私はあなたがcreateNewFileを呼び出さないという問題があると思います。

private File CreateFile(String fileName) 
{ 
    File file = new File(this.getFilesDir(), fileName); 
    try 
    { 
     if(!file.exists()) 
     { 
      file.createNewFile(); 
     } 
    } 
    catch (IOException e) 
    { 
     e.printStackTrace(); 
    } 
    return file; 
} 

private void appendToFile(String file, String content) 
{ 
    try 
    { 
     OutputStreamWriter outputStreamWriter = new OutputStreamWriter(this.openFileOutput(file, this.MODE_APPEND)); 
     outputStreamWriter.append(content + "\n"); 
     outputStreamWriter.close(); 
    } 
    catch (IOException e) 
    { 
     e.printStackTrace(); 
    } 
} 
+0

お試しいただきありがとうございますが、動作しませんでした。私が利用しようとしているファイルディレクトリは外部ストレージにあります。書き込まれる実際のディレクトリは "/ storage/emulated/0/Download/test"として報告されます。このエミュレートされたディレクトリにファイルを書き込むと、完璧に動作しますが、ファイルはデバイスが再起動されるまで表示されません。 – eplewis89

0

多くの検索とテストの後、私は最終的に解決策の1つを介して、他の回答の1つとリンクしました。

https://stackoverflow.com/a/28448843/979220

ソリューションは、ファイルではなくエミュレートされた記憶に滞在するよりも、外部ストレージに伝播する原因となるメディアファイルを、スキャンしました。

関連する問題