问题描述
在我的应用程序中,我想将一个文件复制到另一个硬盘,所以这是我的代码:
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.docx
but 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()
这篇关于如果目录不存在,则创建一个目录的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!