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