1

重複の可能性:
dest ファイルが既に存在する場合でも、Java でファイルの名前をアトミックに変更する方法は?

私は、作業中に強制終了される可能性のあるプロセスを使用しています。ファイルの名前を変更したい。Javaの名前変更操作はアトミック操作ですか?

Linux、HP-UX、Solaris、AIX の事例に興味があります。

4

2 に答える 2

0

名前の変更操作はアトミックである場合とそうでない場合があり、ファイルまたはディレクトリがターゲット名ですでに存在する場合は成功する場合と失敗する場合があります。Unixでは、2つの別々の操作を実行する必要があります。最初に、ファイルがターゲット名で存在するかどうかをテストする必要があります。次に、そのようなファイルが存在しない場合は、先に進んでソースファイルの名前をターゲット名に変更できます。これらの2つの操作の間に、ターゲット名で新しいファイルが作成される場合があります。rename()システムコールはアトミックであり、ターゲットを破棄するため、この新しいファイルは削除されます。

于 2011-05-24T17:29:03.560 に答える
0

いいえ。

少なくとも、VM がコードを離れた直後 ( File.rename() を入力した後)、および File.rename() コードの実行が開始される前に、VM が強制終了される可能性があるためです。

于 2011-05-24T17:31:31.443 に答える