QDir:获取指定文件夹下的所有文件
示例代码
QString path = "xx/xx/xx/";
QDir dir(path);
if (!dir.exists()) {
qInfo() << "dir is null";
return;
}
//设置过滤器
dir.setFilter(QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot);
dir.setSorting(QDir::Name | QDir::IgnoreCase); //按照名称排序
QDir 设置过滤器
QDir::Dirs - 显示文件夹
QDir::AllDirs - 显示所有文件夹
QDir::Files - 显示文件
QDir::NoDotAndDotDot - 不显示系统中的特殊文件,例如"."和".."
QDir::NoSymLinks - 不显示符号链接
QDir::Hidden - 显示隐藏文件
QDir::System - 显示系统文件
QDir::Drives - 显示逻辑驱动器名称,该值在Linux/Unix系统中将被忽略
QDir::NoDot - 不显示软链接文件,例如".文件"
QDir::NoDotDot - 不显示"..文件"
QDir::AllEntries - 又可以表示成Dirs | Files | Drives,显示目录,文件,驱动器及软链接等所有文件
QDir::Readable - 显示当前应用有读权限的文件或目录,需要和Dirs或Files枚举值联合使用
QDir::Writable - 显示当前应用有写权限的文件或目录,需要和Dirs或Files枚举值联合使用
QDir::Executable - 显示当前应用有执行权限的文件或目录,需要和Dirs或Files枚举值联合使用
QDir::Modified - 显示已被修改的文件,该值在Linux/Unix系统中将被忽略
QDir::CaseSensitive - 设定过滤器为大小写敏感。
QDir 设置排序
QDir::Name - 按名称排序
QDir::Time - 按时间排序(修改时间)
QDir::Size - 按文件大小排序
QDir::Unsorted - 不排序
QDir::SortByMask - Name、Time和Size的掩码
QDir::DirsFirst - 首先是目录,然后是文件
QDir::Reversed - 相反的排序顺序
QDir::IgnoreCase - 不区分大小写进行排序
QDir::DefaultSort - 内部标记
QDirIterator:迭代器,用于遍历文件列表
比起其他列表容器更方便管理
hasNext()用于判断文件/目录是否存在,存在返回true,反之则返回false
next()用户迭代器去取下个值
两者配合使用可以遍历整个迭代器
示例代码
QDirIterator iterator(dir);
while(iterator.hasNext()) {
qInfo() << "iterator.fileName = " << iterator.fileName;
iterator.next();
}
QFileInfo:获取文件详细信息
示例代码
QDirIterator iterator(dir);
while(iterator.hasNext()) {
QFileInfo info(iterator.next());
QString name = info.fileName(); //获取文件名
QString fileName = info.filePath(); //文件目录+文件名
//获取文件时间
QDateTime time = info.created(); //文件创建时间
QDateTime time2 = info.lastModified(); //文件最近修改时间
QDateTime time3 = info.lastRead(); //文件最近读时间
QString strTime = time.toString("yyyy-MM-dd hh:mm:ss");
qInfo() << "name = " << name << "fileName = " << fileName << "strTime = " << strTime;
//XXX
}
QFileInfo类更多接口
获取文件类型:
isFile(), isDir(), isSymLink()
获取权限:
isReadable(), isWritable(), isExecutable()
获取所有者:
ower(), owerId(), group(), groupId(), permissions(),
permission(QFile::Permissions permissions)
获取文件前缀名
baseName()
获取文件的完整前缀名
completeBaseName()
获取文件后缀名
suffix()
获取文件的完整后缀名
completeSuffix()
获取所有文件名
entryList()
读写文件
示例代码
写文件
QFile file(fileName);
if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
return;
QTextStream out(&file);
out << "hello world";
读文件
QFile file(fileName);
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
return;
QTextStream in(&file);
while (!in.atEnd()) {
QString line = in.readLine();
qInfo() << "line = " << line;
}
文件夹操作:创建与删除
示例代码
创建文件夹
QFileInfo fileinfo("X/a.txt");
if (!fileinfo.exists()) {
QDir().mkpath(fileinfo.absolutePath());
}
删除文件夹
if (dir.exists(name)) {
dir.rmdir(name);
}
更多操作
刷新目录下内容
refresh()
重命名目录
rename()
删除文件
remove()