这是 WIN32 自动创建多级子目录的 C++ 封装类,用法简单。

        封装没有采用类的静态函数方式,而是在构造函数里面直接完成工作。没什么具体的原因,只是当时做成这样了,这么多年就一直这样用了。

 

#ifndef __HSS_AUTO_CREATE_FOLDER_HSS__
#define __HSS_AUTO_CREATE_FOLDER_HSS__ #include <shlwapi.h> #pragma comment(lib, "shlwapi.lib") /**************************************************************************************************\
自动创建目录
方法: char* pszFile..
char* pszPath... auto_folder af(pszFile); //自动建立文件pszFile所在的目录
auto_folder af(pszPath); //自动建立目录pszPath

  如下用法,均创建目录 c:\\tmp\\sel
  auto_folder af("C:\\temp\\sel");
  auto_folder af("C:\\temp\\sel\\1.jpg"); 
  auto_folder af("C:\\temp\\sel\\"); 
  参数如何区分目录和文件:
如果最后有\\肯定是目录
如果最后又后缀".",则肯定是文件
如果最后没有\\,也没有后缀'.",则认为是路径
\**************************************************************************************************/ class auto_folder
{
public:
auto_folder(LPCTSTR pszPath)
{
//如果后面有\\则是路径,如果没有,但有后缀,则是文件,无后缀则也是路径
char szPath[_MAX_PATH] = {0};
strncpy(szPath, pszPath,_MAX_PATH);
szPath[_MAX_PATH-1] = 0; char* pdot = strrchr(szPath, '.');
char* psp = strrchr(szPath, '\\');
if (psp && pdot && pdot > psp)
{
//文件方式,去掉文件名
psp[0] = 0;
}
else
{
//缺省是个目录,这个地方可能吧没有后缀的文件当作目录
} PathAddBackslash(szPath); if (PathIsDirectory(szPath))
return; psp = strchr(szPath, '\\');
while(psp)
{
*psp = 0;
if (!PathIsDirectory(szPath))
{
if (!CreateDirectory(szPath, 0))
return;
}
*psp = '\\';
psp = strchr(psp + 1, '\\');
}
};
}; #endif

自动创建WIN32下多级子目录的C++封装类的更多相关文章

  1. C#实现多级子目录Zip压缩解压实例 NET4.6下的UTC时间转换 [译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了 asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程 asp.net core异步进行新增操作并且需要判断某些字段是否重复的三种解决方案 .NET Core开发日志

    C#实现多级子目录Zip压缩解压实例 参考 https://blog.csdn.net/lki_suidongdong/article/details/20942977 重点: 实现多级子目录的压缩, ...

  2. md详解和rd详解:一次性创建多个目录和多级子目录

    md 命令: 官方解释: E:\ABC>md /? 创建目录. MKDIR [drive:]path MD [drive:]path 如果命令扩展被启用,MKDIR 会如下改变: 如果需要,MK ...

  3. windows下怎样使用md命令一次建立多级子目录

    在Windows系统中一次只能够创建一个子目录,在命令提示符窗口则可以一次性创建多个子目录,例如如果想在f盘创建多级子目录,则md 23\13\65\45,后面的数字随便都可以.如果想一次性删除多级目 ...

  4. java自动创建多级目录

    // 创建文件上传路径 public static void mkdir(String path) { File fd = null; try { fd = new File(path); if (! ...

  5. platform型设备在/dev目录下自动创建设备节点的分析【转】

    转自:http://blog.csdn.net/rockrockwu/article/details/7357648 系统启动过程中platform设备.驱动注册完毕,为什么在/dev目录下就自动创建 ...

  6. linux下自动创建设备文件节点---class

    在驱动模块初始化函数中实现设备节点的自动创建 我们在刚开始写Linux设备驱动程序的时候,很多时候都是利用mknod命令手动创建设备节点,实际上Linux内核为我们提供了一组函数,可以用来在模块加载的 ...

  7. CodeIgniter 让控制器可以支持多级子目录的 Router 类库

    MY_Router.php 放到 system/application/libraries 目录下,就可以让 CI 的控制器支持多级子目录了.这样,你就可以在 system/application/c ...

  8. 怎样使用md命令一次建立多级子目录

    https://jingyan.baidu.com/article/37bce2be30cae21002f3a224.html 点击开始,运行,在运行窗口中输入“cmd”.   打开cmd窗口之后,用 ...

  9. win32下开发hadoop

    转载自:http://my.oschina.net/muou/blog/408543[木偶:Windows下使用Hadoop2.6.0-ecli­p­s­e­-­p­­lugin插件] 对于一些细节地 ...

随机推荐

  1. [Java 基础]控制语句

    选择语句 if语句 if语句会判断括号中的条件是否成立,如果成立则执行if语句中的代码块,否则跳过代码块继续执行. 语法 if(布尔表达式) {    //如果布尔表达式为true将执行的语句 } 例 ...

  2. $\LaTeX$笔记:首字下沉

    $\LaTeX$系列根目录: Latex学习笔记-序 首字下沉 \IEEEPARstart{W}{ith} ,第一个参数W会变大,占用两行,第二个参数”ith”变会大写. 如代码 \IEEEPARst ...

  3. “全能”选手—Django 1.10文档中文版Part3

    Django 1.10官方文档的入门教程已经翻译完毕,后续的部分将不会按照顺序进行翻译,而是挑重点的先翻译. 有兴趣的可以关注我的博客. 第一部分传送门 第二部分传送门 第四部分传送门 3.2 模型和 ...

  4. Struts2 源码分析——拦截器的机制

    本章简言 上一章讲到关于action代理类的工作.即是如何去找对应的action配置信息,并执行action类的实例.而这一章笔者将讲到在执行action需要用到的拦截器.为什么要讲拦截器呢?可以这样 ...

  5. 实用的60个CSS代码片段

    1.垂直对齐 如果你用CSS,则你会有困惑:我该怎么垂直对齐容器中的元素?现在,利用CSS3的Transform,可以很优雅的解决这个困惑: .verticalcenter{ position: re ...

  6. HTML5 Canvas彩色小球碰撞运动特效

    脚本简介 HTML5 Canvas彩色小球碰撞运动特效是一款基于canvas加面向对象制作的运动小球动画特效.   效果展示 http://hovertree.com/texiao/html5/39/ ...

  7. Intellij IDEA 导入 eclipese项目之后,中文注释乱码解决方案

    首先,看导入后整个IJ界面: 可以看到注释是乱码,要解决问题就跟我开始做吧,看右下角有个"UTF-8",点一下选择"GBk",选择"Reload&qu ...

  8. 圆形背景的TextView

    [应用场景]: [需要的xml]:shape_circle.xml <?xml version="1.0" encoding="UTF-8"?>&l ...

  9. Linq的分页与组合查询的配合使用

    1.首先使用Linq连接数据库,并扩展属性 public partial class User { public string SexStr { get { string end = "&l ...

  10. .Net Core WebAPI 基于Task的同步&异步编程快速入门

    .Net Core WebAPI 基于Task的同步&异步编程快速入门 Task.Result async & await 总结 并行任务(Task)以及基于Task的异步编程(asy ...