1. ホーム
  2. c++

ディレクトリが存在しない場合、作成する

2023-08-27 14:45:46

質問

私のアプリでは、ファイルを他のハードディスクにコピーしたいので、これは私のコードです。

 #include <windows.h>

using namespace std;

int main(int argc, char* argv[] )
{
    string Input = "C:\\Emploi NAm.docx";
    string CopiedFile = "Emploi NAm.docx";
    string OutputFolder = "D:\\test";
    CopyFile(Input.c_str(), string(OutputFolder+CopiedFile).c_str(), TRUE);

    return 0;
}

ということで、これを実行すると D: HDDにファイル testEmploi NAm.docx を作成したいのですが、testフォルダが存在しない場合は作成して欲しいのです。

Boostライブラリを使用せずに行いたいのですが。

どのように解決するのですか?

WINAPIを使用する CreateDirectory() 関数を使用して、フォルダを作成します。

この関数は、ディレクトリが既に存在するかどうかをチェックせずに使用することができますが、失敗するために GetLastError()ERROR_ALREADY_EXISTS :

if (CreateDirectory(OutputFolder.c_str(), NULL) ||
    ERROR_ALREADY_EXISTS == GetLastError())
{
    // CopyFile(...)
}
else
{
     // Failed to create directory.
}

ターゲットファイルを構築するためのコードが間違っています。

string(OutputFolder+CopiedFile).c_str()

この場合 "D:\testEmploi Nam.docx" : ディレクトリとファイル名の間にパス区切り文字がありません。修正例です。

string(OutputFolder+"\\"+CopiedFile).c_str()