【发布时间】:2010-12-22 18:14:01
【问题描述】:
如果源目录和目标目录,MoveFile 实际上会将源文件复制到目标文件中,这意味着我最终会看到两个文件。
这是实现重命名的最佳方式吗?
【问题讨论】:
-
你到底是什么意思?
MoveFileEx和MOVEFILE_COPY_ALLOWED不会给你两个文件 - 如果两个文件在不同的卷上,它会调用 CopyFile 然后 DeleteFile。 -
我想我见过 MoveFile() 会执行 CopyFile() + DeleteFile() 的实例,但源文件仍被某人锁定,因此其状态将设置为 Delete Pending;然后当它被解锁时它神奇地消失了。或者也许我正在编造这个;不记得了。
-
如果程序崩溃或断电,非原子移动(AKA 复制删除)可能会导致不一致。
标签: c winapi file-rename