12

FileWriterを使用してファイルに書き込みを行っていますが、ファイルを(プロセス外で)削除した後でも、FileWriterが例外をスローしないことに気付きました。

これは正常ですか?

4

3 に答える 3

16

これは、オペレーティングシステムによって異なります。

  • Windowsでは、通常、開いているファイルを削除することはできません。
  • Unixでは、開いているファイルを削除して、そのファイルへの書き込み(またはファイルからの読み取り)を続行することは完全に許容されます。ファイルを削除すると、ディレクトリエントリはなくなります。ただし、その内容は、ファイルが閉じられるまでディスク上に存在し続けます。ファイルを参照する開いているハンドルがすべて閉じられると、OSは自動的にディスク領域を再利用します。
于 2012-02-06T18:09:55.407 に答える
1

はい、それは正常です。I / Oを実行する従来の方法のほとんどを使用して、ファイルが存在しない場合は、ファイルが作成されます。もちろん、これは、書き込みを開始する前に削除したことを保留しています。

于 2012-02-06T18:10:05.937 に答える
0

ファイルは複数の場所に表示される可能性があります(ハードリンク付き)ファイルを削除すると、ハードリンクの1つが削除されます(おそらく唯一)。他の場所にリンクがある場合でも、ファイルにはアクセスできます。

削除されたが開いているファイルは引き続きディスク領域を占有します。十分な大きさの場合は、使用されている領域を意味し、ディスク上にあるすべてのファイルのサイズが異なります。

ところで:あなたが見ればあなたは開いているファイルの内容(削除されているかどうかにかかわらず)を読み書きすることができます/proc/{pid}/fd/{fid}

于 2012-02-06T19:19:56.153 に答える