0

我只是想使用 copyfile 来复制文件,就这么简单,但它不起作用。我用谷歌搜索了它并查看了 20 个链接,它们都说“ object.CopyFile (source, destination[, overwrite])”

问题是我无法让它为我复制 txt 文件,我尝试以管理员身份运行它,但仍然无法正常工作。我还需要将源和目标作为 lpctstr (因为它不会在不使用多字节字符的情况下编译,并且除非我使用 Unicode 字符集,否则我的其他代码将无法工作)。

我的代码是

#include <iostream>
#include <Windows.h>

using namespace std;

int main()
{

 CopyFile("C:\\Somefolder\\file.txt","C:\\folder\\file.txt",0);
 return 0;
}

我正在运行 Windows 7,vc++ 2010,编译为调试,如果我错过了什么,对不起。

4

2 回答 2

15

换行:

CopyFile("C:\\Somefolder\\file.txt","C:\\folder\\file.txt",0);

和:

BOOL b = CopyFile("C:\\Somefolder\\file.txt","C:\\folder\\file.txt",0);
if (!b) {
    cout << "Error: " << GetLastError() << endl;
} else {
    cout << "Okay " << endl;
}

这应该告诉你它是否以及为什么它失败了。错误代码,一旦你有了,就可以在这里查找。


如果,正如您的评论所表明的那样,您得到ERROR_PATH_NOT_FOUND,我首先要看的是路径c:\somefolder和是否c:\folder存在以及实际的源文件c:\somefolder\file.txt

要记住的一件特别的事情:CopyFile不会为目标文件创建目录,它必须在您尝试复制之前存在。CreateDirectory有多种方法可以做到这一点,例如使用CreateDirectoryExSHCreateDirectoryEx)。

于 2011-01-18T06:04:50.460 回答
-1

如果您使用 fopen(...) 或 CloseHandle(HANDLE) 如果您对文件使用 HANDLE(如 hFile...)... 对我来说,则必须检查是否使用 fclose(FILE*) 关闭文件有用!

安塔雷斯 (IT)

于 2018-01-05T21:20:37.953 回答