创建多级目录多级文件夹三种实现方法全面解析

12738 人浏览 | 时间: 2015-06-26 23:13:42 | 作者: codexia

    创建多级目录,就是给出一个路径,如果中间含有的路径中包含多个目录,且不存在,则自动创建多级路径。

    我所了解到的,可以用三种方法创建多级目录。下面分别来介绍一番。【目录和文件夹是同一个意思】
    1.【ANSII版本】直接调用创建多级目录API函数MakeSureDirectoryPathExists
    使用此函数,首先需要包含头文件Dbghelp.h,如#include <Dbghelp.h>。同时还要导入lib库Dbghelp.lib。导入lib库可以在VS菜单“项目”->“属性”->“配置属性”->“链接器”->“输入”->“附加依赖项”中,输入“Dbghelp.lib.”即可。另外一个是使用预编译指令【#pragma comment(lib,"Dbghelp.lib")】即可。如果不导入lib库,会提示无法解析的外部符号。如果不包含头文件,则提示找不到MakeSureDirectoryPathExists标识符。
    函数MakeSureDirectoryPathExists的声明如下:
BOOL WINAPI MakeSureDirectoryPathExists(PCSTR DirPath);
    此函数用于创建指定的路径中所有的目录。也就是我们要的多级目录。此函数的名字叫做确保文件夹路径存在,也就是说,如果给定了文件夹,如果存在的目录则忽略,不存在的就全部创建,给定的含有多级不存在的目录都会被创建出来,保证这个给定的路径一定是存在的。此函数只有一个参数,参数的类型是PCSTR,此参数是const char *类型,表示此参数不会被函数修改。同时也表明,此参数不能是Unicode编码的字符串。使用前要将Unicode编码的字符串正确的转换为ANSII编码的字符串,否则路径就是乱码。
    此函数只创建文件夹,不创建文件。传入的文件路径如果以文件夹结束,则需要用\作为结束,比如d:\aa\bb\,这样才会创建aa文件夹,并在aa文件夹中创建bb文件夹,如果是d:\aa\bb,则是会创建aa文件夹。当然,你可以直接传入一个文件名的路径,如d:\aa\bb\1.txt,函数会自动提取其中的路径,然后创建没有的文件夹,但是不会创建文件。这样就创建了aa文件夹,且在aa中创建了bb文件夹。
    如果参数中的目录都存在或者如果函数参数中的目录不存在,且每一个目录都会被创建,则表示创建成功。如果有目录不存在,且只创建了不存在的目录的部分或者一个也没有创建,表示创建失败,返回FALSE。
    路径可以是相对路径,也可以是绝对路径。
    特别要注意的一点,MSDN特别提示,所有的DbgHelp函数,都是单线程的。MakeSureDirectoryPathExists函数是其中一个,也是单线程的。如果多个线程同时调用,可能出现异常的行为或者内存错误。所以如果要在多个线程都会用到,要做好同步工作,避免此函数在多个线程中同时执行。单线程中是不会出问题的。
请微信扫码阅读。
为防止恶意爬虫,
已开启反爬机制,
理解哟~~~~
标注
评论
站内搜
百度搜
传送到手机
手机扫码,识别文字,完成传送x
加载中...
标注内容x
加载中...
添加标注x
收藏 0 点赞 0