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);