ファイルに書き込むためにFileWriterを使用していて、ファイルを削除した後でもFileWriterが例外をスローしないことに気付きました。削除されたファイルへのJavaの書き込み
これは正常ですか?
ファイルに書き込むためにFileWriterを使用していて、ファイルを削除した後でもFileWriterが例外をスローしないことに気付きました。削除されたファイルへのJavaの書き込み
これは正常ですか?
これは、オペレーティングシステムによって異なります。
Windowsでははい、正常です。 I/Oを実行する従来の方法のほとんどを使用して、ファイルが存在しない場合は、それを作成します。これはもちろん、を削除して、の前に書いています。
ファイルが複数の場所に表示されることがあります(ハードリンクあり)。ファイルを削除すると、ハードリンクの1つが削除されます(可能性があります)。
削除されても開いているファイルは引き続きディスク領域を占有しますが、十分に大きければ、使用されている領域が使用されている可能性があり、ディスク上にあるすべてのファイルのサイズが異なります。
ところで:あなたは、これがオンになっているOSは何/proc/{pid}/fd/{fid}
に見れば、開いているファイル(削除されたりしない)の内容を読み出し/書き込みができますか?例えば、 'rm'を実行しているLinuxでは、ファイルをそのパスから分離するだけで、ファイルへのすべてのハンドルがなくなると実際に削除されます(まだ開いていれば実際に簡単に回復できます)。 –