新しいファイルのバイトの書き込みがtransactionnalyであることを保証するためのwayin JAVAがあるかどうかを知りたい。に書き込み、一時ファイルを作成しますファイルtransactionを書き込むにはどうすればいいですか?
public static boolean write(byte[] content, String filepath) {
File tmp = new File(filepath + ".tmp");
try {
OutputStream out = new FileOutputStream(tmp);
out.write(content);
out.close();
// At this point the file is correctly written
tmp.renameTo(new File(filepath));
// Now the file is renamed to the final place
return true;
} catch (Exception e) {
tmp.delete();
}
return false;
}
:例外が書き込み中に発生した場合
、ファイルは通常
おかげ
一般的なやり方は、一時ファイルに書き込むことです。書き込みが成功したことがわかったら、一時ファイルを実際の場所に移動します。しかし、どちらのファイルも同じパーティションになければなりません。 – njzk2
どのような環境ですか? Java EE?春のサービス?デスクトップ? – Puce
'...ファイルを作成してはいけません。 ' - それは新しいファイルのためだけですか?その場合、ファイルを作成して後で削除するだけで、njzk2が言ったように、(隠された)一時ファイルを使用して、トランザクションが成功するまで表示または読み取られるのを防ぐためにコピー/移動を成功させることができます。 – Thomas