详解C++ 创建文件夹的四种方法
发布时间:2021-11-08 06:17:08 所属栏目:教程 来源:互联网
导读:在开头不得不吐槽一下,我要的是简单明了的创建文件夹的方式,看得那些文章给的都是复杂吧唧的一大坨代码,不仔细看鬼知道写的是啥。因此,为了方便以后自己阅读,这里自己写一下 C++ 创建文件夹的四种方式: 貌似都是 Windows 的 提前说明:从参数角度上看,
在开头不得不吐槽一下,我要的是简单明了的创建文件夹的方式,看得那些文章给的都是复杂吧唧的一大坨代码,不仔细看鬼知道写的是啥。因此,为了方便以后自己阅读,这里自己写一下 C++ 创建文件夹的四种方式: 貌似都是 Windows 的 提前说明:从参数角度上看,其实都应该使用 char*,但是为了方便这里使用的都是 string。在 SO 上找到一个方式把 string 转成 char*,就是调用 string 的 c_str() 函数。 本文示例都是在 E:database 路径下创建一个叫做 testFolder 的文件夹。 使用 system() 调用 dos 命令 #include <iostream> using namespace std; int main() { string folderPath = "E:databasetestFolder"; string command; command = "mkdir -p " + folderPath; system(command.c_str()); return 0; } 使用头文件 direct.h 中的 access 和 mkdir 函数 关于 direct.h 我觉得 维基百科 上介绍的不错 #include <direct.h> #include <iostream> using namespace std; int main() { string folderPath = "E:databasetestFolder"; if (0 != access(folderPath.c_str(), 0)) { // if this folder not exist, create a new one. mkdir(folderPath.c_str()); // 返回 0 表示创建成功,-1 表示失败 //换成 ::_mkdir ::_access 也行,不知道什么意思 } return 0; } 调用 Windows API 函数 #include <windows.h> #include <iostream> using namespace std; int main() { string folderPath = "E:databasetestFolder"; if (!GetFileAttributesA(folderPath.c_str()) & FILE_ATTRIBUTE_DIRECTORY) { bool flag = CreateDirectory(folderPath.c_str(), NULL); // flag 为 true 说明创建成功 } else { cout<<"Directory already exists."<<endl; } return 0; } 调用 MFC 封装好的接口函数 不推荐此方法,出错的话会有点麻烦。 #include <iostream> #include <shlwapi.h> using namespace std; int main() { string folderPath = "E:databasetestFolder"; if (!PathIsDirectory(folderPath.c_str())) // 是否有重名文件夹 { ::CreateDirectory(folderPath.c_str(), 0); } return 0; } 如果你出现了错误 undefined reference to imp__PathIsDirectory @ 4,可以参考 undefined reference to imp PathIsDirectory 下面的方法是基于你详细阅读完上述链接后的前提下给出的 说我在 CodeBlocks 下解决该问题的方法: 第一步:在项目上右击,选择 Build Options 第二步: 在 Linker Settings 里添加 libshlwapi.a 文件 (编辑:好传媒网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |