QT目录操作

1.1目录操作
1.1.1判断目录是否存在

    QDir mdir("D:/");
    qDebug()<<mdir.exists();

1.1.2创建目录

    QDir mdir("D:/CESHI");
  if(mdir.exists()){
      qDebug()<<"目录已经存在!";
  }
  else{
      mdir.mkdir("D:/CESHI");
      qDebug()<<"目录创建成功";
  }

1.1.3获取常用目录

qDebug()<<mdir.current();  //返回应用当前的目录
    qDebug()<<mdir.currentPath();//返回应用程序当前目录的绝对路径。
    qDebug()<<mdir.homePath(); //返回用户主目录的绝对路径
    qDebug()<<mdir.rootPath(); //返回根目录的绝对路径。

1.1.4目录切换

    QDir mdir("D:/");
   qDebug()<<mdir.dirName(); //返回目录名字
   qDebug()<<mdir.absolutePath();//返回绝对路径

   mdir.cd("C:/");   //切换目录
   qDebug()<<mdir.absolutePath();

1.1.5文件夹遍历

QDir mDir("D:/");
foreach (QFileInfo mItem, mDir.entryInfoList()) //返回目录中所有文件和目录的QFilelnfo对象列表
{ if(mItem.isDir())
        qDebug() <<" Dir "<< mItem.filePath();
    else if(mItem.isFile())
        qDebug() <<" File "<< mItem.filePath(); }

1.1.6获取文件夹里所有的文件
c_str():生成一个const char*指针,指向以空字符终止的数组

#include <QCoreApplication>
#include <iostream>
#include <QFile>
#include <QDir>
#include <QString>
#include <QStringList>
#include <QDebug>
#include <QByteArray>
#include <QMap>
#include <QVector>
#include <string>
using namespace std;

void GetAllFileFolder(QString dirPath, QVector<QString> &folderList)
{
    QDir dir(dirPath);
    dir.setFilter(QDir::Dirs);
    foreach(QFileInfo fullDir, dir.entryInfoList())
    {

        if(fullDir.fileName() == "." || fullDir.fileName() == "..") continue;
        folderList.push_back(fullDir.absoluteFilePath());
        GetAllFileFolder(fullDir.absoluteFilePath(), folderList);
    }
    return ;
}
QStringList getFileNames(const QString &path)
{
    QDir dir(path);
    QStringList nameFilters;
    nameFilters << "*.*";
    QStringList files = dir.entryList(nameFilters, QDir::Files|QDir::Readable, QDir::Name);
    return files;
}

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    string folder_name={"E:/xuniji"};
        QVector<QString> folderList;
        GetAllFileFolder(QString::fromStdString(folder_name), folderList);
        folderList.append(QString::fromStdString(folder_name));
        int count = 0;
        for(auto subFolderList:folderList)
        {
            QList<QString> list = subFolderList.split("/");
            QString out_file_name;
            if(list.size() > 1)
            {
                for (int i = 0; i < list.size(); i++)
                {
                    out_file_name += list[i] + "/";
                }
            }
            else {
                out_file_name = subFolderList + "/";
            }
            QStringList file_list = getFileNames(subFolderList);
            if(file_list.size() == 0) continue;
            for (QString &file_name:file_list)
            {
                count++;
                qDebug() << out_file_name + file_name ;
            }
        }
        qDebug() << "\nA total of " << count <<"files were find!\n";
        qDebug() << "done\n";

    return a.exec();
}

1.1.7过滤器

   QDir mDir(QDir::current()); 
   QStringList filters; 
   filters<<"*.cpp"<<"*.h"<<"*.txt"<<".pro"; 
   mDir.setNameFilters(filters); 
   qDebug()<<mDir.entryList(filters, QDir::Files);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风赤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值