【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"
*/

 

posted @ 2021-09-03 15:07  牛龙飞  阅读(112)  评论(0编辑  收藏  举报