しっかりとJavaでファイルを削除する方法
-
21-08-2019 - |
質問
どうすれば安全にJavaでファイルを削除しますか?私は javafaq.nuするでコードを試してみましたが、問題はあなたですそれはこのバグによるにマッピングされた後、実際にWindows上のファイルを削除することはできませんのます。
その後、私はちょうど使用してみました Sysinternalsのsdelete の窓に、しかし、私は避けたいどの使用許諾契約書にあなたがそれを使用する最初の時間をクリックする必要があります。
解決
は、NTFSなどのジャーナリングファイルシステムでは、実際にしっかりとドライブ上のすべての空き領域を拭くことなく、1つのファイルを消去する方法はありません。問題は、(あなたはおそらくランダムなデータで上書きしました)新しいブロックが古いもののように、ディスク上の同じ場所にあることが保証されていないということです。
sdeleteのようなユーティリティは、あなたのために働くかもしれないが、一つは、単に防衛の方法を阻止するために何もしないものとその実行可能ファイルを置き換えることができます。
安全なあなたのデータを保つために、あなたが持っている唯一の真の解決策は完全にドライブを暗号化することです。
他のヒント
私はコード化され、この機能を試してみました、動作するように見えます:
public static void secureDelete(File file) throws IOException {
if (file.exists()) {
long length = file.length();
SecureRandom random = new SecureRandom();
RandomAccessFile raf = new RandomAccessFile(file, "rws");
raf.seek(0);
raf.getFilePointer();
byte[] data = new byte[64];
int pos = 0;
while (pos < length) {
random.nextBytes(data);
raf.write(data);
pos += data.length;
}
raf.close();
file.delete();
}
}
たぶんファイルにdeleteOnExitを()でしょうか?
所属していません StackOverflow