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

tom*_*tom 7 c winapi file-rename

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

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

Gre*_*ill 9

MoveFile功能确实是你想要的.从文档:

MoveFile功能将移动(重命名)是一个文件或目录(包括其子女)可以在同一目录或整个目录.

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

  • `MoveFileEx` 默认只移动,除非你通过 `MOVEFILE_COPY_ALLOWED` 标志,它**不会复制**。 (2认同)

cpx*_*cpx 5

尝试

#include <stdio.h>

int Result = rename( oldname , newname );

if (Result)
   // "Error occurred." );
else
   // "File was successfully renamed!";
Run Code Online (Sandbox Code Playgroud)


wel*_*tty 1

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

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

并且它不会留下源头。

  • 这在我添加后有效:`#include &lt;Windows.h&gt; #include &lt;winbase.h&gt; #include &lt;Tchar.h&gt;` (2认同)