本文介绍了如果目录不存在,则创建一个目录的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我的应用程序中,我想将一个文件复制到另一个硬盘,所以这是我的代码:

In my app I want to copy a file to the other hard disk so this is my code:

 #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但我希望他创建测试文件夹,如果它不存在.

so after executing this, it shows me in the D:HDD a file testEmploi NAm.docxbut I want him to create the test folder if it doesn't exist.

我想在不使用 Boost 库的情况下做到这一点.

I want to do that without using the Boost library.

推荐答案

使用 WINAPI CreateDirectory() 函数来创建一个文件夹.

Use the WINAPI CreateDirectory() function to create a folder.

你可以不检查目录是否已经存在就使用这个函数,因为它会失败但是GetLastError() 将返回ERROR_ALREADY_EXISTS:

You can use this function without checking if the directory already exists as it will fail but GetLastError() will return ERROR_ALREADY_EXISTS:

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

构建目标文件的代码有误:

The code for constructing the target file is incorrect:

string(OutputFolder+CopiedFile).c_str()

这会产生 "D:estEmploi Nam.docx":目录和文件名之间缺少路径分隔符.示例修复:

this would produce "D:estEmploi Nam.docx": there is a missing path separator between the directory and the filename. Example fix:

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

这篇关于如果目录不存在,则创建一个目录的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-19 21:50