2016-07-25 4 views
0

私はアンドロイドを初めて使っていますが、現在私が覚えている小さな「再生」アプリケーションでいくつかのファイルを保存しようとしています。アプリケーションはシャットダウンされます。実行時に:アプリケーションを再起動するとAndroidの内部ファイルが消えるように見える

file.exists() 
file.isFile() 

などの方法では、アプリケーションを再起動すると常にfalseが返されます。

これは私がファイルを保存するためにオンラインで見つける方法です:

public void writeToFile(String data, String filePath, Context context){ 
    File file = new File(context.getFilesDir(), filePath); 

    if(!file.exists()){ 
     try{ 
      file.createNewFile(); 
     }catch(IOException e) { 
      e.printStackTrace(); 
      Log.e("Exception", "File couldn't be created"); 
     } 
    } 

    try { 
     OutputStreamWriter outputStreamWriter = new OutputStreamWriter(context.openFileOutput(filePath, Context.MODE_PRIVATE)); 
     outputStreamWriter.write(data); 
     outputStreamWriter.close(); 
    } 
    catch (IOException e) { 
     Log.e("Exception", "File write failed: " + e.toString()); 
    } 
} 

私は解決策を見つけようとして多くのことをグーグルでてきたが、それらのどれも働きました。ファイルを書き込んだり読み込めるようになってからアプリケーションが動作しているときに動作するようですが、アプリケーションの再起動時にはファイルを見つけることができません。 (file.exists()はfalseを返します)

+1

マニフェストに外部ストレージの読み取りと書き込みの両方の権限がありますか? – Ben

+0

もちろん、再起動後にファイルが存在しないことを確認する方法も表示されます。 – greenapps

+0

'file.createNewFile();'。そのステートメントを削除します。そのナンセンス。 OpenFileOutputはファイルを作成します。 – greenapps

答えて

0

ここで内部ストレージに書き込もうとしていますか?そうではなく、外部ストレージにアクセスする場合は、下記のAndroid.comのガイダンスをご覧ください。

https://developer.android.com/guide/topics/data/data-storage.html#filesInternal

このあなたはへの書き込みをしようとしている内部ストレージであれば、あなたはメソッドに正しいコンテキストを渡していることを確認する必要があります。たとえば、MainActivityクラスから実行していて、そのメソッドがそのクラスに含まれていた場合は、

writeToFile( "Some data"、 "aFile.txt"、MainActivity。この

関連する問題