您的位置:首页 > 编程语言 > C语言/C++

C++中创建文件夹

2015-12-03 11:24 471 查看
最近由于工作的需要,在C++程序中需要创建新文件夹,在网上查阅了一下,现在进行总结一下。

我的程序是运行在windows平台下,所以创建文件夹时需要调用windows里的接口,将程序加上以下几行:

#include ​“windows.h”

#include "shlwapi.h"



#pragma comment(lib, "shlwapi.lib")

创建文件夹需要两个函数,分别为PathIsDirectoryA和CreateDirectoryA,首先将对它们进行简要介绍:

1.​PathIsDirectoryA函数

原型:BOOL ​PathIsDirectoryA(LPCSTR pszPath);

功能:判断pszPath所指的文件夹是否存在,若存在,返回True,否则返回False;

参数:

​ pPathName:长指针,指向一个字符串,该字符串指定要判断是否存在的目录的路径。

2.​CreateDirectoryA函数

原型:BOOL ​CreateDirectoryA(LPCSTR lpPathName,

LPSECURITY_ATTRIBUTES lpSecurityAttributes​);

功能:创建一个新文件夹​;

参数:

​pPathName:长指针,指向一个字符串,该字符串指定要创建的目录的路径。

lpSecurityAttributes:忽略,一般设置为NULL。​

返回值: 非零表示成功,零表示失败。若想获得更多的错误信息,调用GetLastError函数。

备注: 这个函数不是递归的。它可以在一个路径中创建唯一的最终目录。也就是说,如果父目录或中间目录不存在,该函数将失败并显示错误消息ERROR_PATH_NOT_FOUND。如果要创建多级目录,需要一级一级的创建。

接下来是我在VS2013上写的一个小程序源代码,在程序当前目录下创建文件夹folder1,并在folder1里创建文件夹folder2:

#include "stdafx.h"

#include "iostream"

#include "string"

#include "windows.h.h"

#include "shlwapi.h"

#pragma comment(lib, "shlwapi.lib")

using namespace std;

int _tmain(int argc, _TCHAR* argv[])

{

string strPath = ".\\folder1";

if (!PathIsDirectoryA(strPath.c_str()))

{

if (0 != CreateDirectoryA(strPath.c_str(), NULL))

cout << "Create folder1 successfully!\n";

else

cout << "Fail to create folder1\n";

}

else

cout << "Folder1 already exists!\n";

strPath += "\\folder2";

if (!PathIsDirectoryA(strPath.c_str()))

{

if (0 != CreateDirectoryA(strPath.c_str(), NULL))

cout << "Create folder2 successfully!\n";

else

cout << "Fail to create folder2\n";

}

else

cout << "Folder2 already exists!\n";

cout << endl;

system("pause");

return 0;

}

此外,还可以用函数​CreateDirectory和CreateDirectoryW来创建文件夹,但使用时涉及到数据string类型向wstring类型的转换,我尝试了一下,不能将string转化为指针直接复制,所以就放弃了。​

注:源代码中包含头文件需要用尖括号,但尖括号在博客中不能显示,故改为了引号!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: