3

これまでのところ、assets フォルダーにテキスト ファイルを作成しましたが、問題なく読み取ることができ、本来の動作を実行できます。次を使用して書き込むと:

 FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE); 
 fos.write(("0").getBytes());
 fos.close()

できます。ただし、アプリを閉じて後で再度開くと、変更した内容が記憶されていません。

何か案は?

4

2 に答える 2

0

書き込み後にフラッシュを呼び出すのを忘れているだけだと思います

FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE); 
 fos.write(("0").getBytes());
 fos.flush();
 fos.close();
于 2012-12-19T00:42:37.420 に答える
0

assets または raw 内のファイルは読み取り専用であることを意図しているため、新しい場所 ( などEnvironment.getDataDirectory()) にコピーすると、そこに書き込めるようになります。


これはある種の例外をスローすると思いますが、空の catch ブロックはありますか? 少なくとも使用する必要がありますe.printStackTrack()。そうしないと、アプリがサイレントに失敗します...

try {
    FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE); 
    fos.write(("0").getBytes());
    fos.close();
} catch (Exception e) {
    e.printStackTrace();
}
于 2012-12-19T00:27:02.860 に答える