一、QFileInfo的简单用法

参考链接:http://blog.sina.com.cn/s/blog_3e62c50d01013xd4.html

QFileInfo的几个构造函数:

QFileInfo ( )

QFileInfo ( const QString & file )

QFileInfo ( const QFile & file )

QFileInfo ( const QDir & dir, const QString & file )

QFileInfo ( const QFileInfo & fileinfo )

一般用法:

QFileInfo fileInfo(path);//orQFileInfo fileInfo;fileInfo.setFile(path);

bool            exists(); 判断文件是否存在,若存在返回true。

qint64         size(); 获取文件大小,返回bytes。

//路径和文件名相关:

QString        path(); 返回文件路径,不包含文件名。

QString        filePath(); 返回文件路径,包含文件名。

QString         fileName(); 返回文件名称。

// 例子如下

//文件名QString file_name = fileinfo.fileName();qDebug()<<file_name<<endl;//文件后缀QString file_suffix = fileinfo.suffix();qDebug()<<file_suffix<<endl;//绝对路径QString file_path = fileinfo.absolutePath();
qDebug()<<file_path<<endl;
QFileInfo fileInfo("/home/dipper/xyz.tar.gz");fileInfo.path(); // returns "/home/dipper"fileInfo.fileName(); // returns "xyz.tar.gz"fileInfo.baseName(); // returns "xyz"fileInfo.completeBaseName(); // returns "xyz.tar"fileInfo.suffix(); // returns "gz"fileInfo.completeSuffix(); // returns "tar.gz"

//类型:

bool                  isFile(); 判断是否是文件。

bool                  isDir(); 判断是否是路径。

bool                  isSymLink(); 判断是否是符号链接。

//

QString        symLinkTarget(): 返回符号链接的文件

//日期相关:

QDateTime   created(); 创建时间

QDateTime   lastModified(); 最近修改时间

QDateTime   lastRead(); 最近读时间

//权限:

isReadable(), isWritable(), isExecutable()

//所有者:

ower(), owerId(), group(), groupId(), permissions(),

permission(QFile::Permissions permissions)

dir(): 返回父目录

//下面三个都返回"~/examples/191697"

QFileInfo fileInfo1("~/examples/191697/.");

QFileInfo fileInfo2("~/examples/191697/..");

QFileInfo fileInfo3("~/examples/191697/main.cpp");

//下面三个都返回"."

QFileInfo fileInfo4(".");

QFileInfo fileInfo5("..");

QFileInfo fileInfo6("main.cpp");

//相对路径和绝对路径

QString absolute = "/local/bin";

QString relative = "local/bin";

QFileInfo absFile(absolute);

QFileInfo relFile(relative);

二、 创建文件夹


//folder 是路径,可以是绝对或相对路径
bool PathHelper::createDirectory(QString folder)
{// 检查目录是否存在,若不存在则新建QDir dir;if (!dir.exists(folder)){bool res = dir.mkpath(folder);return true;}else {return false;}
}

三、判断是否存在子目录

bool judgeDir(QDir dir){dir.setFilter(QDir::AllEntries | QDir::NoDotAndDotDot | QDir::Hidden);foreach(QFileInfo fileInfo, dir.entryInfoList()){if(fileInfo.isDir()){return true;}else if(fileInfo.isFile()){return true;}else{return false;}}return true;}

四、迭代删除文件夹

迭代

//删除文件夹
bool DelDir(const QString &path)
{if (path.isEmpty()) {return false;}QDir dir(path);if (!dir.exists()) {return true;}dir.setFilter(QDir::AllEntries | QDir::NoDotAndDotDot); //设置过滤QFileInfoList fileList = dir.entryInfoList(); // 获取所有的文件信息foreach(QFileInfo file, fileList) { //遍历文件信息if (file.isFile()) { // 是文件,删除file.dir().remove(file.fileName());}else { // 递归删除PlanImageForm::DelDir(file.absoluteFilePath());}}return dir.rmpath(dir.absolutePath()); // 删除文件夹
}

不迭代

bool PathHelper::DelDir(const QString  name)
{PathHelper::intial();QString path = productPath + "/" + name;if (path.isEmpty()) {return false;}QDir dir(path);if (!dir.exists()) {return true;}bool flag =RemoveDirectory(path.toStdWString().c_str());//dir.setFilter(QDir::AllEntries | QDir::NoDotAndDotDot); //设置过滤//QFileInfoList fileList = dir.entryInfoList(); // 获取所有的文件信息//foreach(QFileInfo file, fileList) { //遍历文件信息//    if (file.isFile()) { // 是文件,删除//     file.dir().remove(file.fileName());//   }// else { // 递归删除//        DelDir(file.absoluteFilePath());//  }//}return flag; // 删除文件夹
}

五、获取一个目录下所有文件夹的名字

1、不迭代,获取目录下的文件名

QStringList getFileNames(const QString &path)
{QDir dir(path);QStringList nameFilters;//nameFilters << "*.jpg" << "*.png";QStringList files = dir.entryList(nameFilters, QDir::NoSymLinks|QDir::Dirs|QDir::Files|QDir::Readable|QDir::NoDotAndDotDot , QDir::Name);return files;
}

2、迭代,获取目录下(包含子目录)下的所有文件名,使用时需要修改。

/************压缩文件************/
int writer(QString ZipSrc)
{QFileInfo fileinfo(ZipSrc);if(fileinfo.isFile()){//文件名QString file_name = fileinfo.fileName();qDebug()<<file_name<<endl;//文件后缀QString file_suffix = fileinfo.suffix();qDebug()<<file_suffix<<endl;//绝对路径QString file_path = fileinfo.absolutePath();qDebug()<<file_path<<endl; }else if(fileinfo.isDir()){//文件夹名QString file_name = fileinfo.fileName();qDebug()<<file_name<<endl;//文件夹绝对路径QString file_path = fileinfo.absolutePath();qDebug()<<file_path<<endl;QStringList files = getFileNames(ZipSrc);foreach (QString var, files){qDebug()<<var<<endl;QString subZipSrc=ZipSrc+"/"+var;writer(subZipSrc) ;}}return 0;
}

3、迭代/不迭代  获取所有的目录或者子目录

void PathHelper::GetAllFileFolder(std::vector<QString>& folder)
{PathHelper::intial();QDir dir(productPath);dir.setFilter(QDir::Dirs);
//遍历foreach(QFileInfo fullDir, dir.entryInfoList()){if (fullDir.fileName() == "." || fullDir.fileName() == "..") continue;folder.push_back(fullDir.baseName());// this->GetAllFileFolder(fullDir.absoluteFilePath(), folder);}}

六、拷贝文件

//拷贝文件:
bool MyTest007::copyFileToPath(QString sourceDir ,QString toDir, bool coverFileIfExist)
{toDir.replace("\\","/");if (sourceDir == toDir){return true;}if (!QFile::exists(sourceDir)){return false;}QDir *createfile     = new QDir;bool exist = createfile->exists(toDir);if (exist){if(coverFileIfExist){createfile->remove(toDir);}}//end ifif(!QFile::copy(sourceDir, toDir)){return false;}return true;
}

七、迭代拷贝文件夹

bool copyDirectoryFiles(const QString &fromDir, const QString &toDir, bool coverFileIfExist)
{QDir sourceDir(fromDir);QDir targetDir(toDir);if (!targetDir.exists()) {    /**< 如果目标目录不存在,则进行创建 */if (!targetDir.mkdir(targetDir.absolutePath()))return false;}QFileInfoList fileInfoList = sourceDir.entryInfoList();foreach(QFileInfo fileInfo, fileInfoList) {if (fileInfo.fileName() == "." || fileInfo.fileName() == "..")continue;if (fileInfo.isDir()) {    /**< 当为目录时,递归的进行copy */if (!PlanImageForm::copyDirectoryFiles(fileInfo.filePath(),targetDir.filePath(fileInfo.fileName()),coverFileIfExist))return false;}else {            /**< 当允许覆盖操作时,将旧文件进行删除操作 */if (coverFileIfExist && targetDir.exists(fileInfo.fileName())) {targetDir.remove(fileInfo.fileName());}/// 进行文件copyif (!QFile::copy(fileInfo.filePath(),targetDir.filePath(fileInfo.fileName()))) {return false;}}}return true;
}

Qt文件QFile 和文件夹QDir相关推荐

  1. 一次神坑:Qt的QFile新建文件

    关于QFile新建文件 一般思路 解决方案 具体原因 一般思路 QFile file(fn); //fn为QString if (!file.open(QIODevice::WriteOnly)) { ...

  2. Qt中的默认文件夹路径获取方法

    原文地址:http://m.blog.csdn.net/blog/jiezhj_tjsd/37560363 头文件: 1.#include <QDesktopServices> 2.#in ...

  3. Qt字符转换、文件操作、加密、电脑操作

    文章目录 前言 1.CommonlyUsed .h 2.CommonlyUsed .cpp 前言 记录下Qt下常用的一些字符串格式转换和对文件的操作以及简单的加密算法. 提示:以下是本篇文章正文内容, ...

  4. Qt编程之Xml文件的读取

    目录 一.xml的格式说明 二.QT中读取xml的类与常用函数 三.代码思路 四.代码实现 五.结果展示 XML最主要的功能是数据传输,有的时候可以当一个小型的数据库来使用,因为其定义标签高度自由,所 ...

  5. 基于QT开发PC端文件加密工具

    基于QT开发PC端文件加密工具 1.客户需求 某案子.该方案,通过外挂TF卡实现,本地教育资源的调取使用.按客户需求,把TF卡内的内容进行加密,并在软件中写好解密,确保资源文件只能在教育机中才能正常播 ...

  6. Qt学习笔记之文件处理

    Qt提供了通用的文件处理类QFile和处理文本的QTextStream类和处理二进制数据的QDataStream类,这些流操作极大地方便了对文件的督促存储.对文件信息和目录进行操作的类是QfileIn ...

  7. qfile 创建文件_Qt之二进制文件读写

    点击上方"Qt学视觉",选择"星标"公众号重磅干货,第一时间送达 想要学习的同学们还请认真阅读每篇文章,相信你一定会有所收获 除了文本文件之外,其他需要按照一定 ...

  8. qt生成无ui界面动态库,有ui界面的动态库,以及含有资源文件和qss文件的动态库

    提要 此文分别就qt生成纯代码的动态库,含有ui文件的动态库以及含有资源文件qss文件和切图的动态库. 实现 1.纯代码的生成qt库.即没有ui文件的项目. 打开QtCreate,新建文件,选择lib ...

  9. QT 选择文件,另存为文件组件

    1.  ChildFile.h #ifndef CHILDFILE_H #define CHILDFILE_H#include <QWidget> //#include <QtCor ...

最新文章

  1. Android事件机制
  2. SQL的OPENROWSET开启和使用方法
  3. 信息收集——指纹识别
  4. Java学习 第三章 数组(三)排序算法
  5. spring学习(38):注入set类型
  6. Docker轻量级管理工具Portainer
  7. 放球问题 组合数学 转自百度百科
  8. RDD partitioner入门详解
  9. 图片内包含文本制作方法
  10. jcodec_java-jcodec-有人看过该库的文档吗?
  11. java public就是可选吗_java 中的public
  12. 45_局域网ip正则表达式
  13. 硬盘 : ATA、ATAPI的含义
  14. oracle数据库查询904错误,EXP-00008:遇到ORACLE错误904问题详解
  15. word排版案例报告_看完这4个文章排版要点,你就会排版啦!
  16. BDP荧光染料BODIPY FL-PEG2-COOH/carboxylic acid/羧基羧酸,Ex/Em(nm)503/509
  17. 网课/网校/知识付费/在线教育系统,100%全功能开源,可免费商用
  18. 华为防火墙应用层过滤--URL
  19. 13 个 Mongodb GUI 可视化管理工具,总有一款适合你
  20. 阿里云主机迁移 配置域名解析 顶级域名配置子域名

热门文章

  1. 布谷鸟算法求解车间调度问题(书籍摘录版)
  2. Java程序设计之加法器的实现
  3. 信号完整性基础04:串扰(1)
  4. javqhc木马的清除方法
  5. 内网穿透软件对比——cpolar : 网云穿(上)
  6. android 股票曲线 动态,各种曲线图表。矩形 圆形,股票
  7. det曲线_Winform中设置ZedGraph的曲线符号Symbol以及对应关系
  8. R语言基础 chapter2
  9. 微信小程序使用video播放视频失败
  10. IDEA 关联本地SVN项目