如果是源目录和目标目录,MoveFile 实际上会将源文件复制到目标文件中,这意味着我最终会看到两个文件。
这是实现重命名的最佳方式吗?
该MoveFile
功能确实是您想要的。从文档中:
MoveFile函数将移动(重命名)同一目录中或跨目录的文件或目录(包括其子目录)。
如果源位置和目标位置都在同一个卷上,则执行原子重命名操作。如果它们位于不同的卷上,则改为执行复制/删除操作(这是您能做的最好的)。
尝试
#include <stdio.h>
int Result = rename( oldname , newname );
if (Result)
// "Error occurred." );
else
// "File was successfully renamed!";
你的代码是什么样的?我有这个:
if(MoveFile(_T("c:\\hold\\source"),_T("c:\\hold\\dest")))
{
printf("succeeded\n");
}else
{
printf("Error %d\n",GetLastError());
}
它不会留下源头。
您可能想尝试在不指定 的情况下使用MoveFileEx()
APIMOVEFILE_COPY_ALLOWED
,以查看它是否提供了您正在寻找的行为。