目录操作
一、源代码说明
freecplus是一个Linux系统下的C/C++开源框架,源代码请前往C语言技术网(www.freecplus.net)下载。
本文介绍的是freecplus框架的目录操作函数和类。
函数和类的声明文件是freecplus/_freecplus.h。
函数和类的定义文件是freecplus/_freecplus.cpp。
示例程序位于freecplus/demo目录中。
编译规则文件是freecplus/demo/makefile。
二、创建目录
在Linux下,如果想创建一个"/tmp/aaa/bbb/ccc/ddd/data.xml"的文件,必须先创建"/tmp/aaa/bbb/ccc/ddd",步骤如下:
1)如果"/tmp"目录不存在,创建"/tmp"。
2)如果"/tmp/aaa"目录不存在,创建"/tmp/aaa"。
3)如果"/tmp/aaa/bbb"目录不存在,创建"/tmp/aaa/bbb"。
4)如果"/tmp/aaa/bbb/ccc"目录不存在,创建"/tmp/aaa/bbb/ccc"。
5)如果"/tmp/aaa/bbb/ccc/ddd"目录不存在,创建"/tmp/aaa/bbb/ccc/ddd"。
6)创建"/tmp/aaa/bbb/ccc/ddd/data.xml"文件。
这些操作虽然没有多少技术含量,但也很烦人。
MKDIR函数根据绝对路径的文件名或目录名逐级的创建目录。
函数声明:
1 | bool MKDIR(const char *pathorfilename,bool bisfilename=true); |
参数说明:
pathorfilename:绝对路径的文件名或目录名。
bisfilename:说明pathorfilename的类型,true-pathorfilename是文件名,否则是目录名,缺省值为true。
返回值:true-创建成功,false-创建失败,如果返回失败,原因有大概有三种情况:1)权限不足;2)pathorfilename参数不是合法的文件名或目录名;3)磁盘空间不足。
示例(demo30.cpp)
1 | /* |
三、获取目录下的文件信息
freecplus框架把获取某目录及其子目录中的文件列表信息的功能封装成CDir类。
类的声明:
1 | // 获取某目录及其子目录中的文件列表信息。 |
CDir类的成员变量和函数的说明文字在类的声明中已详细描述。
我们通过一个应用场景来演示CDir类的用法。
先执行以下脚本生成测试目录和文件。
1 | mkdir /tmp/root |
执行以上脚本后,在/tmp/root目录中的目录和文件列表如下:
示例(demo32.cpp)
1 | /* |
运行效果
注意事项:
1)每次调用ReadDir方法后,把CDir类其它成员变量的值输出到屏幕,观察运行效果。
2)OpenDir方法的in_MatchStr参数非常重要,在实际开发中应用广泛。
3)如果文件名圆点"."打头,OpenDir方法将不读取这些文件,如果您希望读取这些文件,可以修改_OpenDir方法中的源代码。
4)OpendDir方法的in_MaxCount参数设置了每次扫描目录中的文件数量,建议不超过10000,如果取值过大,打开目录的时间会比较长,还会消耗比较多的内存。
5)OpenDir的bSort参数设置是否对m_vFileName容器进行排序,排序会消耗资源和时间,可以不排序就不排序。
四、版权声明
C语言技术网原创文章,转载请说明文章的来源、作者和原文的链接。
来源:C语言技术网(www.freecplus.net)
作者:码农有道