1

別のスレッドでファイルにオブジェクトを書き込んでいますが、このスレッドは 1 分ごとに実行されます。すべてが正常に動作しますが、システムがクラッシュした場合 (電源を取り外した場合)、次の再起動時にファイル (オブジェクトを書き込んでいるファイル) のサイズが 0 バイトになります。

私のコードは次のとおりです。

FileOutputStream fileOut = new FileOutputStream("/sdcard/vis.ser");
ObjectOutputStream out = new ObjectOutputStream(fileOut);
out.writeObject(/*An object*/);    
out.close();
4

2 に答える 2

0

では、以前のデータが破壊され、新しいデータがまだ保存されていないという心配はありませんか?シェルをtmpファイルに書き込もうとしましたが、それを閉じることができた場合は、名前を変更するだけですか?

于 2012-07-19T06:31:13.753 に答える
0

アイデアは、チェックサムを使用してファイルが正しく書き込まれたことを確認し、Whity が提案するように名前を変更することです。

ただし、プリミティブ型を保存する場合は、「0 バイト」の問題を回避するSharedPreferencesを使用できます。

この質問は、それを防ぐ方法についてのより広いアイデアを提供します。

于 2012-07-19T06:57:06.413 に答える