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:\folderc:\somefolder\file.txt

覚えておくべき 1 つの特別な点:CopyFileは、ターゲット ファイルのディレクトリを作成しません。コピーする前に存在している必要があります。CreateDirectoryCreateDirectoryExまたは)など、さまざまな方法でこれを行うことができますSHCreateDirectoryEx

于 2011-01-18T06:04:50.460 に答える