Qt 目录与文件操作

Qt 目录与文件操作

QCoreApplication获取信息

qDebug() << QCoreApplication::applicationFilePath();//程序运行路径及名称
qDebug() << QCoreApplication::applicationDirPath();//程序运行路径
qDebug() << QCoreApplication::applicationPid();//程序进行id
qDebug() << QCoreApplication::applicationName();//程序名称
//qDebug() << QDir::currentPath();

创建文件相关

 QString strDirPath = QCoreApplication::applicationDirPath();
    strDirPath += "/myFolder";
    //判断文件夹是否存在
    QFileInfo fileInfo(strDirPath);
    if(!fileInfo.exists()){//不存在则创建
        QDir dir("");
        bool res = dir.mkpath(strDirPath);
        qDebug() << "res:" << res;
    }
    QString fileName = strDirPath + "/test.txt";
    //保存QByteArray
    QFile file(fileName);
    bool delOld = false;//是否删除之前的文件,不删除直接在最后追加
    if(delOld){
        if(!file.open(QFile::WriteOnly | QFile::Truncate)){
            qDebug() << "open error!";
            return 0;
        }
    }else{
        if(!file.open(QFile::ReadWrite)){
            qDebug() << "open error!";
            return 0;
        }
    }
    QByteArray byteArr = "hello,world!!";
    qint64 ret = -1;
    //写入byteArr到文件
    file.seek( file.size() );
    ret = file.write( byteArr );
    qDebug() << ret;
    file.close();
    //QFile::remove(fileName);//删除文件

查看所有文件大小

#include <QDir>

qint64 GetDirSize(const QString &path){
    QDir dir(path);
    qint64 size = 0;
    //遍历文件
    foreach(QFileInfo fileInfo,dir.entryInfoList(QDir::Files))
    {
        size += fileInfo.size();
    }
    //遍历文件夹
    foreach(QString subDir,dir.entryList(QDir::Dirs|QDir::NoDotAndDotDot))
    {
        size += GetDirSize(path+QDir::separator()+subDir);
    }
    char unit ='B';
    qint64 curSize=size;
    if(curSize>1024){
        curSize/=1024;
        unit ='K';
        if(curSize>1024){
            curSize/=1024;
            unit ='M';
            if(curSize>1024){
                curSize/=1024;
                unit ='G';
            }
        }
    }
    qDebug()<<curSize<<unit<<"\t"<<qPrintable(path)<<endl;
    return size;
}

查看指定目录指定类型的文件

void addTool::findFile() {
    QString strDir = "d:/";
    //TODO 判断路径是否存在
    QDir dir(strDir);
    if (!dir.exists()) {
        return;
    }
    //TODO 获取所选文件类型过滤器
    QStringList filters;
    filters << QString("*.fsn");

    //TODO 定义迭代器并设置过滤器
    QDirIterator dir_iterator(strDir, filters, QDir::Files | QDir::NoSymLinks, QDirIterator::Subdirectories);
    int fsnFileNumber = 0;
    while (dir_iterator.hasNext()) {
        dir_iterator.next();
        QFileInfo file_info   = dir_iterator.fileInfo();
        QString fsn_file_path = file_info.absoluteFilePath();
        qDebug() << "遍历到的FSN文件 : " << fsn_file_path;
        fsnFileNumber++;
    }
    //TODO 将指定文件夹中的fsn文件数量添加到label_fsnFileNumber。
    qDebug() << "一共遍历到的FSN文件 : " << QString::number(fsnFileNumber);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值