常用类及其函数
QDir类
QDir类提供对目录及其内容的访问。
常用函数如下:
目录创建
bool QDir::exists() const;//用于确定目录是否存在,存在返回true,不存在返回false
bool isFile() const;//判断是否是文件
bool isDir() const;//判断是否是文件夹
QString absolutePath() const;//获取当前目录路径
QString QDir::absoluteFilePath(const QString &fileName) const;//用于获取给定文件名的完整绝对路径,根据给定的文件名称(如1.bmp)给出在目录中的绝对路径,包含文件名及后缀
QString QDir::rootPath();//获取当前目录的根目录,如“C:/”
QString fileName() const;//获取文件名
bool QDir::mkdir(const QString &dirName) const;//用于在文件系统中创建一个新的目录,但要创建多级目录的话,还是要调用mkpath函数
bool QDir::mkpath(const QString &dirPath) const;//用于在文件系统中创建一个目录,包括其所有的父目录。如果目录成功创建或已经存在,则返回true;否则返回false。如果路径中的某个目录不存在,函数会递归地创建缺失的目录层级。
QString QDir::currentPath();//是该类的静态成员函数,返回的是当前应用程序的工作目录的路径,即程序源码路径
遍历目录及文件
void QDir::setNameFilters(const QStringList &nameFilters);//用于设置目录对象的名称过滤器来限制列出或搜索的文件或目录的类型。
//函数功能:遍历文件夹路径下的子目录或者文件。返回的是返回此文件加下所有文件及目录的完整信息,包括用户组,大小,访问时间,权限等等所有与文件有关的信息,以**QFileInfoList ** 格式返回。
QFileInfoList QDir::entryInfoList(const QStringList &nameFilters, QDir::Filters filters = NoFilter, QDir::SortFlags sort = NoSort) const;//滤波器nameFilters是手动设置(可以通过setNameFilters函数设置),滤波器filter是枚举型
QFileInfoList QDir::entryInfoList(Filters filters = NoFilter, SortFlags sort = NoSort) const;//滤波器filter是枚举型
根据以上的函数,举例如下:
QString dir_str = "image/" + QDate::currentDate().toString("yyyy-mm-dd");
QDir dir(dir_str );
if(!dir.exists())
{
dir.mkpath(dir_str );
}
QStringList filter;
filter << "*.bmp";
dir.setNameFilters(filter);
QFileInfoList fileInfoList = dir.entryInfoList(filter);
if(fileInfoList.cout() > 100)
{
//移除一个文件(bmp图像)
}
else
{
//保存一个文件(bmp图像)
}
//函数功能:遍历文件夹路径下的子目录或者文件。返回的是所有的文件夹名称或文件名称,不是路径,以QStringList 格式返回
//QDir::entryList并不支持目录的深度搜索,只会获得一级目录下的内容,因此需要通过递归的方式进行深度搜索
QStringList QDir::entryList(const QStringList &nameFilters, Filters filters = NoFilter, SortFlags sort = NoSort) const;//滤波器nameFilters是手动设置(滤波器格式:如字符串"*.bmp"),滤波器filter是枚举型
QStringList QDir::entryList(Filters filters = NoFilter, SortFlags sort = NoSort) const;//滤波器filter是枚类型
Filters枚举类型的取值如下:
- QDir::Dirs 列出目录;
- QDir::AllDirs 列出所有目录,不对目录名进行过滤;
- QDir::Files 列出文件;
- QDir::Drives 列出逻辑驱动器名称,该枚举变量在Linux/Unix中将被忽略;
- QDir::NoSymLinks 不列出符号链接;
- QDir::NoDotAndDotDot 不列出文件系统中的特殊文件".“及”…";
- QDir::NoDot 不列出"."文件,即指向当前目录的软链接
- QDir::NoDotDot 不列出"…"文件,即指向上级目录的软链接;
- QDir::AllEntries 其值为Dirs | Files | Drives,列出目录、文件、驱动器