8

Windows APIはReplaceFile便利な関数だけですか?それとも、複数の呼び出しを使用してコード化できる以上のことを実現しMoveFileExますか?

私は現在、私が必要な状況にあります

  1. 一時ファイルを書き込んでから
  2. この一時ファイルの名前を元のファイル名に変更し、元のファイルを置き換える可能性があります。

(バックアップなどは必要ないため)MoveFileExwithを使用することを考えましたが、 APIもありますMOVEFILE_REPLACE_EXISTINGReplaceFile

これは私に考えさせました:ReplaceFile実際には何か特別なことをしますか、それとも単なる便利なラッパーMoveFile(Ex)ですか?

4

2 に答える 2

10

これの鍵は、ドキュメントの次の行にあると思います(私の強調):

置換ファイルは、置換されたファイルの名前とそのIDを想定しています。

を使用するMoveFileExと、置換ファイルの ID が異なります。作成日、作成者、ACL などは保持されません。を使用ReplaceFileすると、ファイルを開いて内容を変更したかのように見せることができます。

ドキュメントには次のように書かれています。

もう 1 つの利点は、ReplaceFile が新しいファイル データをコピーするだけでなく、元のファイルの次の属性も保持することです。

  • 作成時間
  • 短いファイル名
  • オブジェクト識別子
  • DACL
  • セキュリティ リソースの属性
  • 暗号化
  • 圧縮
  • 名前付きストリームがまだ置換ファイルにない

たとえば、置換ファイルが暗号化されていて、置換後のファイルが暗号化されていない場合、結果のファイルは暗号化されません。

于 2013-07-12T10:09:44.980 に答える