9

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

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

4

4 回答 4

10

MoveFile功能确实是您想要的。从文档中:

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

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

于 2010-12-22T18:30:07.740 回答
5

尝试

#include <stdio.h>

int Result = rename( oldname , newname );

if (Result)
   // "Error occurred." );
else
   // "File was successfully renamed!";
于 2010-12-22T20:09:45.857 回答
2

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

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

它不会留下源头。

于 2010-12-22T18:15:58.300 回答
1

您可能想尝试在不指定 的情况下使用MoveFileEx()APIMOVEFILE_COPY_ALLOWED ,以查看它是否提供了您正在寻找的行为。

于 2010-12-22T18:29:29.230 回答