在C++中创建文件夹
Creating folders in C++
我最近开始在C++工作,当我必须在执行代码时创建一个目录时遇到了这种情况。当我必须创建一个文件夹时,代码工作正常,但是当我必须在这个新创建的文件夹中创建另一个文件夹时,代码会失败。
假设我在C:
,想将我的文件存储在C:/A/B/
中。如果我必须将文件存储在C:/A/
中,则使用以下mkdir()
代码可以正常工作,但是当我添加另一个文件夹B
时失败。
以下是我的代码片段:
#include <sys/stat.h>
#include <string>
using namespace std;
int main()
{
string stringpath = "C:/A/B/";
int status = mkdir(stringpath.c_str(),0777);
if(status!=0)
{
//.....
}
else
{
//....
}
}
有人可以帮助我创建这个目录,我可以在父目录中拥有任意数量的文件夹吗?(P.S:我添加了头文件sys/stat.h,iostream和字符串(
这是您在 C++17 中执行此操作的方式:
#include <filesystem>
namespace fs = std::filesystem;
fs::create_directories("./a/b/c")
mkdir()
仅创建指定路径的最后一个组件。在您的示例中,它将仅创建B
.如果任何父目录不存在(即,如果A
不存在(,则该函数将失败,并显示ENOENT
。 您需要拆分路径并为路径中的每个中间目录调用mkdir()
,同时忽略EEXIST
错误。
status = mkdir("C:/A/", 0777);
if ((status < 0) && (errno != EEXIST)) ...
status = mkdir("C:/A/B/", 0777);
if ((status < 0) && (errno != EEXIST)) ...
如果您不想手动处理此问题,请使用为您处理它的包装器,例如 Boost 的create_directories()
函数:
bool create_directories(const path& p);
bool create_directories(const path& p, system::error_code& ec);
效果:通过为不存在的任何
p
元素调用create_directory()
来建立后置条件。后置条件:
is_directory(p)
返回:如果创建了新目录,则为 true,否则为 false。
抛出:如错误报告中指定的那样。
复杂性:
O(n+1)
其中n
是不存在的p
元素的数量。
您可以调用以下内容:
string stringpath = "C:/A/B/";
int status = mkdir(stringpath.c_str(),0777);
如果C:/A/目录存在。如果不存在,请执行以下操作:
string stringpath = "C:/A/";
int status = mkdir(stringpath.c_str(),0777);
stringpath = "C:/A/B/";
int status = mkdir(stringpath.c_str(),0777);
在 C++11 中,您可以使用实验函数:
#include <experimental/filesystem>
...
std::stringstream bufH;
bufH << dirName << fName;
if (!std::experimental::filesystem::exists(bufH.str()))
{
std::experimental::filesystem::create_directories(bufH.str());
}
尝试像这样的八进制标志 7777 以获得创建此文件夹所需的所有权限。
int status = mkdir(stringpath.c_str(), 7777);
或者在 A 文件夹中做一个 chmod,如下所示: CHMOD -R 7777 *
- 如何在文档文件夹中创建目录
- 如何从Windows控制台调用.exe(C++)以在不同的目录(或任何目录)中创建文件夹?
- 如何使用Windows API C++更改已创建的文件夹/目录安全权限
- 在C++中创建文件夹选取器对话框的最简单方法是什么?
- 在c++编程中的文件夹中创建文件
- 创建文件夹结构
- 在C++中创建文件夹
- 如何使用 c++ 创建对"everyone"具有共享访问权限的文件夹
- 如何在 C++ 中创建一个适用于 Windwos 和 Linux 的文件夹(目录)
- 如果C 中不存在,如何创建文件夹
- 如何将用于创建文件的文件的路径提供给C++中的其他文件夹
- 如何在%appdata%中创建文件夹,在其中创建.bat文件,然后执行它?
- 无法创建将包含日志文件的文件夹
- Windows 7:MFC ActiveX 控件不会在任何文件夹中创建文件
- 嵌入 LuaJIT - 创建包含文件夹
- C - 创建文件夹方法
- 如何在Visual Studio C 2012中创建文件夹
- 如何以编程方式为应用程序创建文件夹,以使用 BOX REST API 在其中上传内容
- 为什么Qt在Qt内部运行时或调试时不会创建文本文件,而是直接从调试文件夹创建文本文件
- 如何从文件文件夹创建自定义文件类型