ReplaceFile Windows API只是一个便利功能吗?

Mar*_* Ba 7 file-io winapi ntfs movefileex visual-c++

ReplaceFileWindows API是仅仅是一个便利功能,还是它实现了超出可以使用多次调用编码的功能MoveFileEx

我目前处于需要(1)编写临时文件然后(2)将此临时文件重命名为原始文件名,可能替换原始文件的情况.

我想过用MoveFileExMOVEFILE_REPLACE_EXISTING(因为我并不需要备份或任何东西),但也有个ReplaceFileAPI和,因为它是在提到替代TxF的.

这让我想到:ReplaceFile实际上做了什么特别的事情,还是只是一个方便的包装MoveFile(Ex)

Dav*_*nan 10

我认为这个问题的关键可以从文档(我的重点)中找到:

替换文件假定替换文件的名称及其标识.

使用时MoveFileEx,替换文件具有不同的标识.它的创建日期不会保留,创建者不会被保留,任何ACL都不会被保留等等.使用ReplaceFile允许您使其看起来像打开文件,并修改其内容.

文档说它是这样的:

另一个优点是ReplaceFile不仅复制新文件数据,还保留原始文件的以下属性:

  • 创作时间
  • 短文件名
  • 对象标识符
  • 的DACL
  • 安全资源属性
  • 加密
  • 压缩
  • 命名流不在替换文件中

例如,如果替换文件已加密,但替换文件未加密,则生成的文件不会加密.

  • 对于身份的确切含义,我没有一个很好的定义.当然,使用的文件系统非常多,在实现级别上有所不同,这当然很复杂.但是如果你使用`MoveFileEx`,你将失去ACL,属性等等.如果使用`ReplaceFile`,则替换内容但保持元数据不变. (2认同)
  • 我认为"身份"在同一文档中进一步说明:"另一个优点是ReplaceFile不仅复制新文件数据,还保留原始文件的以下属性:•创建时间•短文件名•对象标识符•DACL•安全资源属性•加密•压缩•替换文件中尚未包含的命名流例如,如果替换文件已加密,但替换文件未加密,则生成的文件不会加密. (2认同)