C++Windows下创建多级目录
2015-10-19 15:40
615 查看
#include <string> #include <Windows.h> #include <Shlwapi.h> #pragma comment( lib, "Shlwapi.lib" ) #include <strsafe.h> bool CreateMultipleDirectory( LPCTSTR pDirectory ) { if( NULL == pDirectory ) { return false; } //目录或文件已存在 if( PathFileExists( pDirectory ) ) { return true; } TCHAR Directory[ MAX_PATH ]; StringCbCopy( Directory, sizeof( Directory ), pDirectory ); //判断是否是文件路径( 默认有扩展名被认为是文件,无扩展名文件使用std::fstream来判断是否能打开即可判断,本例中不讨论 ) if( 0 != StrCmp( TEXT( "" ), PathFindExtension( Directory ) ) ) { //去掉文件名 PathRemoveFileSpec( Directory ); //文件不存在但目录存在 if( PathFileExists( Directory ) ) { return true; } } //去掉前缀 LPCTSTR i = Directory; while( ( TEXT( '.' ) == *i || TEXT( '\\' ) == *i ) ) { ++i; } //不用创建新文件夹的当前目录( .\\ ) if( 0 == i[ 0 ] ) { return true; } std::wstring Temp; for( ; *i != 0; ++i ) { if( TEXT( '\\' ) == *i ) { if( FALSE == PathFileExists( Temp.c_str() ) && FALSE == CreateDirectory( Temp.c_str(), NULL ) ) { return false; } } Temp.push_back( *i ); } if( FALSE == PathFileExists( Temp.c_str() ) && FALSE == CreateDirectory( Temp.c_str(), NULL ) ) { return false; } return true; } int main() { //在当前工作目录下创建文件目录 bool a = CreateMultipleDirectory( TEXT( "a\\b\\c\\d\\" ) ); //在当前工作目录下为文件准备目录( 特别适合为新下载文件创建目录 ) bool b = CreateMultipleDirectory( TEXT( "1\\2\\3.txt" ) ); return 0; }
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- 如何重装TCP/IP协议
- 关于指针的一些事情
- Windows 8 官方高清壁纸欣赏与下载
- 谁是桌面王者?Win PK Linux三大镇山之宝
- 对《大家都在点赞 Windows Terminal,我决定给你泼一盆冷水》一文的商榷
- Windows Clang开发环境备忘
- 从Windows系统下访问Linux分区相关软件
- 对《大家都在点赞 Windows Terminal,我决定给你泼一盆冷水》一文的商榷
- Windows下搭建本地SVN服务器
- c++ primer 第五版 笔记前言
- Visual Studio 2012 示例代码浏览器 - 数以千计的开发示例近在手边,唾手可得
- Visual Studio 2012 示例代码浏览器 - 数以千计的开发示例近在手边,唾手可得
- share_ptr的几个注意点
- 微软镜像下载
- windows server域用户提升到本地更高权限组中的方法
- 使用命令修改注册表键值及权限
- 通过手机、电脑远程开关机,Windows和linux机手机,电脑相互控制