【问题标题】:can't get copyfile to work无法让 copyfile 工作
【发布时间】:2011-06-10 21:21:15
【问题描述】:

我只是想使用 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,编译为调试,如果我遗漏了什么,请见谅。

【问题讨论】:

  • 你有没有试过检查函数是否失败?此外,对函数的正确引用是 msdn.microsoft.com/en-us/library/aa363851%28v=vs.85%29.aspx - 如果函数失败,GetLastError() 将帮助您确定错误代码。
  • 你提供的链接说 C++ 不支持 CopyFile。
  • @Martin,那是因为 OP 莫名其妙地给了我们一个指向脚本主机文件系统对象的链接(相同的函数名称,完全不同的一切),而不是实际的 C++ 版本。

标签: c++ file-copying


【解决方案1】:

换行:

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:\somefolderc:\folder 路径是否存在以及实际源文件c:\somefolder\file.txt

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

【讨论】:

  • 或者,放置一个断点并将$err,hr 添加到您的监视列表中。
  • @bob:C:\folder 存在吗? (目标目录)。还有,源文件存在吗?
  • @bob 你是如何让它工作的?我遇到了同样的问题,两条路径都存在。
  • @SpencerRuport,你是从GetLastError() 收到ERROR_PATH_NOT_FOUND 吗?
  • @paxdiablo - 是的。 :(
【解决方案2】:

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

ANTARES (IT)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-23
    • 2014-12-26
    • 2017-12-22
    • 2012-02-28
    • 2015-12-01
    • 2012-01-29
    • 2014-12-16
    • 2013-04-19
    相关资源
    最近更新 更多