如果目录不存在则创建
在我的应用程序中,我想将文件复制到另一个硬盘,所以这是我的代码:
#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< /代码> 但我希望他创建测试文件夹(如果不存在)。
我想在不使用 Boost 库的情况下做到这一点。
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;
}
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.
I want to do that without using the Boost library.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(10)
使用 WINAPI
CreateDirectory ()
函数创建文件夹。您可以使用此函数而不检查目录是否已存在,因为它会失败,但
GetLastError()
将返回ERROR_ALREADY_EXISTS
:构建目标文件的代码不正确:
这会生成
"D:\testEmploi Nam.docx"
:目录和文件名之间缺少路径分隔符。修复示例:Use the WINAPI
CreateDirectory()
function to create a folder.You can use this function without checking if the directory already exists as it will fail but
GetLastError()
will returnERROR_ALREADY_EXISTS
:The code for constructing the target file is incorrect:
this would produce
"D:\testEmploi Nam.docx"
: there is a missing path separator between the directory and the filename. Example fix:也许最简单、最有效的方法是使用 boost 和 boost::filesystem 函数。这样你就可以简单地构建一个目录并确保它是平台无关的。
boost::filesystem::create_directory - 文档
Probably the easiest and most efficient way is to use boost and the boost::filesystem functions. This way you can build a directory simply and ensure that it is platform independent.
boost::filesystem::create_directory - documentation
这是创建文件夹的简单方法......
上面的代码对我来说效果很好。
Here is the simple way to create a folder.......
This above code works well for me.
_mkdir
也可以完成这项工作。https://msdn.microsoft.com/en-us/library/2fkk4dzw.aspx
_mkdir
will also do the job.https://msdn.microsoft.com/en-us/library/2fkk4dzw.aspx
从 c++17 开始,您可以轻松地执行此跨平台操作:
注意,如果您需要知道该目录是否实际上是新创建的,则此版本非常有用。
我发现 cppreference 的文档在这一点上有点难以理解:如果目录已经存在,则此函数返回 false。
这意味着,您可以使用此方法或多或少地自动创建一个新目录。
Since c++17, you can easily do this cross-platform with:
Note, that this version is very useful, if you need to know, whether the directory is actually newly created.
And I find the documentation on cppreference slightly difficult to understand on this point: If the directory is already present, this function returns false.
This means, you can more or less atomically create a new directory with this method.
特定于 OpenCV
Opencv 支持文件系统,可能是通过其依赖项 Boost 实现的。
OpenCV Specific
Opencv supports filesystem, probably through its dependency Boost.
这适用于 GCC:
取自:
在 C 中创建新目录
This works in GCC:
Taken from:
Creating a new directory in C
使用
CreateDirectory (char *DirName, SECURITY_ATTRIBUTES Attribs);
< /a>如果函数成功,则返回非零值,否则
NULL
。Use
CreateDirectory (char *DirName, SECURITY_ATTRIBUTES Attribs);
If the function succeeds it returns non-zero otherwise
NULL
.您可以使用cstdlib
尽管 - http://www.cplusplus.com/ articles/j3wTURfi/
您还可以使用以下命令检查该目录是否已存在
You can use cstdlib
Although- http://www.cplusplus.com/articles/j3wTURfi/
you can also check if the directory exists already by using