【QDir】常用案例
一、判断是否存在,不存在则创建
QString fileDir = "./testDir"; QDir dir; if (!dir.exists(fileDir)) { if(dir.mkdir(fileDir)) { qDebug("mkdir success"); } else { qDebug("mkdir fail"); } }
二、遍历目录并读取文件
QString fname = "ex1.txt"; QDir dir = QDir::root(); // "/" qDebug() << "root dir" << dir; // win10系统是 "C:/" if (!dir.cd("tmp")) { // "/tmp" qWarning("Cannot find the \"/tmp\" directory"); } else { QFile file(dir.filePath(fname)); // "/tmp/ex1.txt" if (!file.open(QIODevice::ReadWrite)) qWarning("Cannot create the file"); }
三、列出当前目录中所有文件(不包括符号链接)的程序,按大小排序,最小优先
#include "mainwindow.h" #include <QApplication> #include <QDir> #include <iostream> int main(int argc, char *argv[]) { QApplication a(argc, argv); QDir dir; dir.setFilter(QDir::Files | QDir::Hidden | QDir::NoSymLinks); dir.setSorting(QDir::Size | QDir::Reversed); QFileInfoList list = dir.entryInfoList(); std::cout << " Bytes Filename" << std::endl; for (int i = 0; i < list.size(); ++i) { QFileInfo fileInfo = list.at(i); std::cout << qPrintable(QString("%1 %2").arg(fileInfo.size(), 10) .arg(fileInfo.fileName())); std::cout << std::endl; } MainWindow w; w.show(); return a.exec(); }
四、toNativeSeparators 路径格式转换
QString path = "./tmp/debug/test"; qDebug() << "path: " << path; qDebug() << "toNative: " << QDir::toNativeSeparators(path); /* path: "./tmp/debug/test" toNative: ".\\tmp\\debug\\test" */