用于在 C 中重命名文件的 Win32 API
如果源目录和目标目录,MoveFile 实际上会将源文件复制到目标文件中,这意味着我最终会看到两个文件。
这是实现重命名的最佳方式吗?
If the source directory and the target directory, MoveFile would actually make a copy of the source file into the target file, which means that I will end up seeing two files.
Is that the best way that rename can be achieved?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
MoveFile
功能确实是你想要的。从文档中:如果源位置和目标位置位于同一卷上,则执行原子重命名操作。如果它们位于不同的卷上,则改为执行复制/删除操作(这是您能做的最好的操作)。
The
MoveFile
function is indeed what you want. From the documentation:If the source and destination locations are both on the same volume, then an atomic rename operation is performed. If they're on different volumes, then a copy/delete operation is done instead (this is the best you can do).
尝试
Try
你的代码是什么样的?我有这个:
并且它不会留下来源。
What does your code look like? I have this:
and it does not leave the source behind.
您可能想尝试使用
MoveFileEx()
API< /a> 而不指定MOVEFILE_COPY_ALLOWED
来查看是否提供了您正在寻找的行为。You might want to try using the
MoveFileEx()
API without specifying theMOVEFILE_COPY_ALLOWED
to see if that provides the behavior you're looking for.