Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >一篇文章快速搞懂Qt文件读写操作

一篇文章快速搞懂Qt文件读写操作

作者头像
Coding十日谈
发布于 2020-08-27 03:35:33
发布于 2020-08-27 03:35:33
2.6K00
代码可运行
举报
文章被收录于专栏:Coding十日谈Coding十日谈
运行总次数:0
代码可运行

导读:Qt当中使用QFile类对文件进行读写操作,对文本文件也可以与QTextStream一起使用,这样读写操作会更加简便。QFileInfo可以用来获取文件的信息。QDir可以用于对文件夹进行操作。

本文字数:1000,阅读时长大约:10分钟

一、文件读操作

(1)使用QFile类

Qt封装了QFile类,方便我们对文件进行操作,可以按照如下的步骤进行:

  • 使用QFile加载文件对象
  • 打开文件 file.open(打开方式)
  • 操作文件
  • 关闭文件 file.close()

使用QFile首先用只读方式打开一个文本文件,然后用readAll()方法将文件内容一次全部读取出来,返回值是字节数组QByteArray。QByteArray用来存放二进制数据,如果想要看文字内容需要转换成QString。

Qt默认使用utf-8的编码方式,在Linux中一般没有问题,因为Linux默认也是用utf-8。不过Windows里一般用的是gb18030,所以除非我们明确将文件保存成utf-8编码,否则在Qt代码里需要对编码做一些转换操作:

我们也可以使用readLine方法一次读取一行,然后每次对一行文字进行操作:

(2)使用QTextStream类

如果操作的是文本文件,Qt还专门封装了一个处理文本流的类,我们可以一行一行的读取文本内容

二、文件写操作

(1)使用QFile类

使用QFile同样可以对文件进行写操作:

(2)使用QTextStream类

QTextStream类对操作符进行了重载,我们可以通过 << 操作符将字符串流入文本文件:

三、文件信息读取

除了对文件的读写操作,Qt还封装了QFileInfo类帮助我们获取文件的元数据,比如文件大小、后缀名、创建时间、最后修改时间等等:

四、文件夹的操作

QDir类可以对路径/文件夹/目录进行操作(不同的系统有不同的名称)。首先我们可以用QDir表示绝对路径,比如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    QDir("/home/user/Documents")
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    QDir("C:/Documents and Settings")

也可以表示相对路径,比如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
QDir("images/landscape.png")

我们可以用IsRelative()和IsAbsolute()方法来检验某个QDir对象使用的是绝对路径还是相对路径。不管用的是哪一种,两者之间也可以相互转化:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
QDir directory("Documents/Letters");
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
QString path = directory.filePath("contents.txt");
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
QString absolutePath = directory.absoluteFilePath("contents.txt");

我们经常用到QDir的例子有比如检查某个路径是否存在:

或者查找某个路径下的文件:

五、文件夹的操作

Qt对文件和文件夹的操作封装了很多类,比如对文件操作可以使用QFile,文本文件的读写可以使用QTextStream,读取文件元数据可以使用QFileInfo,文件夹的操作可以使用QDir等。这些类为开发者提供了极大的便利,还有很多方法本文不能一一介绍到,感兴趣的读者也可以查阅Qt的帮助文档。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-08-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Coding十日谈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
QT 文件读写操作
//IO_Translate用来读windows文件,linux下的回车换行是/n,windows下是/r/n 
阳光岛主
2019/02/19
4.2K0
如何批量识别出照片中的水印文字,并将文字作为照片名进行改名分类?基于QT和腾讯OCR的项目实战
在日常工作和生活中,我们常常需要处理大量的照片文件,这些照片中可能包含有用的文字信息。手动识别这些文字并对相应的照片进行重命名是一项繁琐且容易出错的工作。为了解决这一问题,本项目旨在开发一个基于QT和腾讯OCR(光学字符识别)技术的应用程序,实现批量识别照片中的文字并将识别出的文字作为照片的新文件名。
不负众望
2025/03/26
870
如何批量识别出照片中的水印文字,并将文字作为照片名进行改名分类?基于QT和腾讯OCR的项目实战
Qt5实战第六篇:文件操作与输入输出
在 Qt5 中,文件操作与输入输出(I/O)是开发桌面应用程序时不可或缺的一部分。Qt 提供了丰富的类和方法来处理文件的读写、目录的遍历以及数据流的处理。本篇将详细介绍如何在 Qt5 中进行文件操作与输入输出。
china马斯克
2024/12/29
4050
14.QT-QFile文件,QBuffer缓冲区,QDir目录,QFileSystemWatcher文件系统监视
QFile Qt中所有与IO相关的类都继承于QIODevice,继承图如下所示: 其中QFile类便是用于文件操作的类 在QT中,将文件当做一种特殊的外部设备对待(比如:串口,usb等就是外部设备)
诺谦
2018/05/28
2.3K0
二、Qt定时器与文本编辑器制作《QT 入门到实战》
在 Qt 中使用 Label 可以显示文本,但 Label 不止可以显示文本,还可以用于图片的显示。
1_bit
2022/12/18
1.1K0
二、Qt定时器与文本编辑器制作《QT 入门到实战》
Qt读写文件(2种方式)实现详解
FileWR.h #pragma once #include <QtWidgets/QMainWindow> #include "ui_FileWR.h" class FileWR : public QMainWindow { Q_OBJECT public: FileWR(QWidget *parent = Q_NULLPTR); private: Ui::FileWRClass ui; private slots: void on_pushButton_clicked();
zls365
2020/08/19
1.3K0
Qt读写文件(2种方式)实现详解
Qt | 目录和文件路径常用函数大全
QDir 是 Qt 框架中用于处理目录和文件路径的核心类,提供跨平台的目录操作功能。
Qt历险记
2025/03/04
1250
Qt | 目录和文件路径常用函数大全
QT QFile「建议收藏」
QFile是一个读写文本和二进制文件和资源的I/O设备。QFile可以单独使用,或者更方便地与QTextStream或QDataStream一起使用。
全栈程序员站长
2022/07/01
1.2K0
C/C++ Qt 基本文件读写方法
Qt文件操作有两种方式,第一种使用QFile类的IODevice读写功能直接读写,第二种是利用 QFile和QTextStream结合起来,用流的方式进行文件读写。
王瑞MVP
2022/12/23
6680
Qt | Linux+QFileSystemWatcher文件夹和文件监视(例如监视U盘挂载目录)
Qt历险记
2024/09/26
3360
Qt | Linux+QFileSystemWatcher文件夹和文件监视(例如监视U盘挂载目录)
【QT】文件系统相关 -- QFile
🔥 文件操作是应用程序必不可少的部分。Qt 作为⼀个通用开发库,提供了跨平台的文件操作能力。Qt 提供了很多关于⽂件的类,通过这些类能够对文件系统进行操作,如文件读写、文件信息获取、文件制或重命名等
IsLand1314
2025/03/15
1310
【QT】文件系统相关 -- QFile
Fdog系列(五):使用Qt模仿QQ实现登录界面到主界面,功能篇。
Fdog系列(三):使用腾讯云短信接口发送短信,数据库写入,部署到服务器,web收尾篇。
花狗Fdog
2021/05/06
3.2K0
QFile和QTextStream
QFile是用来读写二进制文件和文本文件的输入/输出设备。QFile可以自己单独被使用,但是如果和QDataStream或QTextStream一起使用将更加方便。
全栈程序员站长
2022/09/02
7290
C/C++ Qt 运用JSON解析库 [解析篇]
JSON是一种简单的轻量级数据交换格式,Qt库为JSON的相关操作提供了完整的类支持,使用JSON解析文件之前需要先通过TextStream流将文件读入到字符串变量内,然后再通过QJsonDocument等库对该JSON格式进行解析,以提取出我们所需字段。
王瑞MVP
2022/12/22
1.9K0
【QT】qt 文件操作
文件操作是应用程序必不可少的部分。Qt 作为⼀个通用开发库,提供了跨平台的文件操作能力。 Qt 提供了很多关于文件的类,通过这些类能够对文件系统进行操作,如文件读写、文件信息获取、文件复制或重命名等。
YoungMLet
2024/07/30
2280
【QT】qt 文件操作
图片浏览器?Qt也可以实现!
Windows的图片浏览器大家都用过,可以查看当前文件夹下的图片,往上翻、往下翻并且自动播放。在这一节里,Jungle将用Qt来设计这么一个图片浏览器,实现以下功能:
用户6557940
2022/07/24
1.1K0
图片浏览器?Qt也可以实现!
【QT】系统事件入门 -- 文件 QFile基础和示例
🔥 文件操作是应用程序必不可少的部分。Qt 作为⼀个通用开发库,提供了跨平台的文件操作能力。Qt 提供了很多关于⽂件的类,通过这些类能够对文件系统进行操作,如文件读写、文件信息获取、文件制或重命名等
IsLand1314
2025/03/21
1090
【QT】系统事件入门 -- 文件 QFile基础和示例
C++ Qt开发:QFileSystemWatcher文件监视组件
Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍如何运用QFileSystemWatcher组件实现对文件或目录的监视功能。
王瑞MVP
2024/03/08
9640
C++ Qt开发:QFileSystemWatcher文件监视组件
Qt的简易日志模块封装
C++的下的日志库有很多,如log4cpp、Easylogging++,eplog,g3log,Qt下也有log4qt。
杨永贞
2022/08/11
8050
Qt的简易日志模块封装
Qt文件操作QFile
上述文件读取操作中,使用的是C++习惯下的read函数,其使用也和C++的read函数差不多,需要讲解一下的是QFile的open函数的参数,有以下的表列
impressionyang
2020/08/26
1.7K0
推荐阅读
相关推荐
QT 文件读写操作
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验