用于在C中重命名文件的Win32 API

如果源目录和目标目录,MoveFile实际上会将源文件的副本复制到目标文件中,这意味着我最终会看到两个文件。

这是重命名的最佳方式吗?

MoveFilefunction确实是你想要的。 从文档:

MoveFile函数将在同一目录或目录中移动(重命名)文件或目录(包括其子项)。

如果源位置和目标位置都在同一卷上,则执行primefaces重命名操作。 如果它们位于不同的卷上,则会执行复制/删除操作(这是您可以做的最好的操作)。

尝试

 #include  int Result = rename( oldname , newname ); if (Result) // "Error occurred." ); else // "File was successfully renamed!"; 

您可能希望尝试使用MoveFileEx() API而不指定MOVEFILE_COPY_ALLOWED以查看是否提供了您正在寻找的行为。

你的代码是什么样的? 我有这个:

 if(MoveFile(_T("c:\\hold\\source"),_T("c:\\hold\\dest"))) { printf("succeeded\n"); }else { printf("Error %d\n",GetLastError()); } 

并且它不会留下来源。