1. ホーム
  2. windows

Windowsでアトミックなファイル名変更(上書き)は可能か?

2023-08-11 08:46:06

質問

POSIX システムでは、rename(2) はアトミックな名前の変更操作を提供し、宛先ファイルが存在し、パーミッションが許可していれば、そのファイルの上書きを含みます。

Windows で同じセマンティクスを取得する方法はありますか? 私は Vista と Server 2008 の MoveFileTransacted() について知っていますが、私は Win2k およびそれ以降をサポートするためにこれが必要です。

ここでのキーワードは 原子 ... 解決策は、操作を矛盾した状態にするような方法で失敗してはいけません。

win32では不可能だと言う人をよく見かけますが、本当にそうなのでしょうか?

可能であれば信頼できる引用をお願いします。

どのように解決するのですか?

Win32 は、アトミックなファイル メタデータ操作を保証していません。 引用を提供したいところですが、ありません - 書面または文書による保証がないという事実は、それと同じことを意味します。

これをサポートするためには、独自のルーチンを書かなければなりません。 残念なことですが、win32 がこのレベルのサービスを提供することを期待することはできません。