无法使用copyfile工作

时间:2011-01-18 05:50:40

标签: c++ file-copying

我只是想使用copyfile来复制文件,它就像那样简单,但它不会工作。我用Google搜索并查看了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,编译为调试,对不起,如果我错过了什么。

2 个答案:

答案 0 :(得分:13)

替换行:

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;
}

那应该告诉你它是否以及为什么失败了。您可以查看错误代码here


如果,正如您的评论所示,您收到的是ERROR_PATH_NOT_FOUND,那么首先我要关注的是路径c:\somefolder和{{1存在以及实际的源文件c:\folder

要记住一件特别的事情:c:\\somefolder\file.txt不会为目标文件创建目录,它必须在您尝试复制之前存在。您可以通过多种方式执行此操作,例如使用CreateDirectoryCreateDirectoryExSHCreateDirectoryEx)。

答案 1 :(得分:-1)

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

ANTARES(IT)