根据CreateDirectory递归创建多级目录
分为MFC下的和非MFC下的两种,MFC路径是CString类型的,非MFC的路径是wstring类型的。
下面是MFC下的创建目录:
void __fastcall RecursiveDirectory(CString cstrDir) // 递归创建目录
{
if (cstrDir.GetLength() <= )//是根目录,无需创建目录
{
return;
}
if (cstrDir[cstrDir.GetLength()-] == '\\') // 将路径改为目录
{
cstrDir.Delete(cstrDir.GetLength()-, );
}
// 修改文件属性
WIN32_FIND_DATA wfd;
HANDLE hFind = FindFirstFile(cstrDir, &wfd); // 查找
if (hFind != INVALID_HANDLE_VALUE)
{
FindClose(hFind);
if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
return;
}
// 创建当前目录的地目录失败
if (CreateDirectory(cstrDir,NULL) == false)
{// 退到上一级目录
CString wstrNewDir = cstrDir;
int n = wstrNewDir.ReverseFind('\\');
wstrNewDir = cstrDir.Left(n); // 递归进入
RecursiveDirectory(wstrNewDir); // 递归本函数,再创建目录
// 递归退出后创建之前失败的目录
CreateDirectory(cstrDir,NULL); // 递归返回,在存在的目录上再建目录
}// 多级目录创建成功
}
下面是非MFC的创建目录:
void __fastcall RecursiveDirectory(wstring wstrDir) // 创建复目录
{
if (wstrDir.length() <= )//是根目录,无需创建目录
{
return;
}
if (wstrDir[wstrDir.length() - ] == '\\') // 将路径改为目录
{
wstrDir.erase(wstrDir.end() - );
}
// 修改文件属性
WIN32_FIND_DATA wfd;
HANDLE hFind = FindFirstFile(wstrDir.c_str(), &wfd); // 查找
if (hFind != INVALID_HANDLE_VALUE)
{
FindClose(hFind);
if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
return;
}
// 创建当前目录的地目录失败
if (CreateDirectory(wstrDir.c_str(), NULL) == false)
{// 退到上一级目录
wstring wstrNewDir = wstrDir;
while (wstrNewDir[wstrNewDir.length()-] != '\\') // 撤到当前目录的上一个目录
{
wstrNewDir.erase(wstrNewDir.length() - );
}
// delete '\\'
wstrNewDir.erase(wstrNewDir.length() - ); // delete '\\'
// 递归进入
RecursiveDirectory(wstrNewDir); // 递归本函数,再创建目录
// 递归退出后创建之前失败的目录
CreateDirectory(wstrDir.c_str(), NULL); // 递归返回,在存在的目录上再建目录
}// 多级目录创建成功
}
根据CreateDirectory递归创建多级目录的更多相关文章
- php使用递归创建多级目录
<?php header('Content-type:text/html;charset=utf8'); echo "Loading time:".date('Y-m-d H ...
- PHP判断文件夹是否存在和创建文件夹的方法(递归创建多级目录)
在开始之前,我先说明一下,可能许多朋友与我一样认为只要给一个路径,mkdir就可以创建文件夹,其实不是那样,单个的MKDIR只能创建一级目录,对于多级的就不行了,那如何用mkdir来创建呢?先我抄一段 ...
- PHP递归创建多级目录(一道面试题的解题过程)
今天看到一道面试题,要写出一个可以创建多级目录的函数: 我的第一个感觉就是用递归创建,具体思路如下: function Directory($dir){ if(is_dir($dir) || @mkd ...
- node.js 递归创建多级目录
fs.mkdir只能创建一级目录,所以我们可以自定义一个mkdirs函数,利用递归和回调来实现创建多级目录. function mkdirs(dirname, callback) { //检测目录是否 ...
- PHP递归创建多级目录(一道面试题的解题过程)(转)
今天看到一道面试题,要写出一个可以创建多级目录的函数: 我的第一个感觉就是用递归创建,具体思路如下: function Directory($dir){ if(is_dir($dir) || @m ...
- PHP中使用mkdir创建多级目录的方法
function mkdirs($dir) { if(!is_dir($dir)) { if(!mkdirs(dirname($dir))){ return false; ...
- php创建多级目录的两种方法
1.使用递归的思想 function mkdirs_2($path){ if(!is_dir($path)){ mkdirs_2(dirname($path)); if(!mkdir($path, 0 ...
- php mkdir 创建多级目录实例代码
先介绍一下 mkdir() 这个函数 mkdir($path,0777,true); 第一个参数:必须,代表要创建的多级目录的路径. 第二个参数:设定目录的权限,默认是 0777,意味着最大可能的访问 ...
- 运用php函数mkdir创建多级目录
php默认的mkdir一次只能创建一层目录,如果在当前目录下创建一个div/css/layout 的目录就需要逐层逐层的先创建div,再创建div/css 再创建 div/css/layout,然而我 ...
随机推荐
- 嵌入式系统烧写uboot/bootloader/kernel的一般方法
嵌入式系统烧写uboot/bootloader/kernel的一般方法 本文介绍了在嵌入式系统中烧写uboot/bootloader/kernel 的一般方法,以及如果uboot或者内核出现错误, ...
- Android 国内镜像
Android SDK官网国内很难直接访问,除了FQ/VPN等方法还是很不方便. 原有的Android SDK直接下载因http://dl-ssl.google.com/android/reposit ...
- VS 2010不显示头文件源文件和所有以前分类的文件夹,*.h 和*.cpp都显示在同一个文件
打开VS后不显示头文件源文件和所有以前分类的文件夹,*.h 和*.cpp都显示在同一个文件 点击右图红色指示显示所有文件夹按钮,就能恢复.
- 乐视手机1S正式发售,乐视商城官网抽风遭网友吐槽
乐视手机1S正式发售,乐视商城官网抽风遭网友吐槽 10月27日,乐视召开的新品发布会上正式推出千元金属新机乐1s,售价1099元.今天11月3日上午10:00,乐1s在乐视商城.京东商城首发开卖,现货 ...
- 两种常用的启动和关闭MySQL服务
本博文的主要内容有 .通过图形界面来启动和关闭MySQL服务 .通过DOS窗口来启动和关闭MySQL服务 1.通过图形界面来启动和关闭MySQL服务 2.通过DOS窗口来启动和关闭MySQL服务 感谢 ...
- hdoj 2141 Can you find it?【二分查找+暴力】
Can you find it? Time Limit: 10000/3000 MS (Java/Others) Memory Limit: 32768/10000 K (Java/Others ...
- hdu5127 Dogs' Candies CDQ分治 动态凸包
传送门 题意 有三种操作 加入一个二元组\((x,y)\) 删除一个二元组\((x,y)\) 给出一个二元组\((a,b)\),问\(ax+by\)的最大值 题解 \(z=ax+by \Rightar ...
- toString&&equals方法
toString&&equals方法 先来看看这个题该怎样做? 分析: 1.java里的三大特性,有封装,继承,多态(方法的重载),super,this等关键字 2.常用的方法,equ ...
- 小白学phoneGap《构建跨平台APP:phoneGap移动应用实战》连载四(使用程序载入事件)
在了解了PhoneGap中都有哪些事件之后,本节将開始对这些事件的使用方法进行具体地介绍.本节要介绍的是程序载入事件,也就是deviceready.pause和resume这3个事件. [范例4-2 ...
- [转] npm 模块安装机制简介
npm 是 Node 的模块管理器,功能极其强大.它是 Node 获得成功的重要原因之一. 正因为有了npm,我们只要一行命令,就能安装别人写好的模块 . $ npm install 本文介绍 npm ...