文章目录
前言:
在现代软件开发中,文件操作是应用程序与外部世界交互的基本方式之一。无论是读取用户数据、存储配置信息,还是管理临时文件,文件系统都是不可或缺的一部分。Qt,作为一个功能强大的跨平台开发框架,提供了一套全面的文件操作API,使得开发者能够在不同的操作系统上实现一致的文件处理逻辑。本篇文章将深入探讨Qt中的文件操作,包括文件的打开、读写、关闭,以及文件和目录信息的获取等核心功能。通过详细的代码示例和类介绍,读者将能够理解并掌握Qt文件操作的基本概念和实用技巧。
1. Qt 文件概述
文件操作是应用程序必不可少的部分。Qt 作为一个用开发库,提供了跨平台的文件操作能力。 Qt提供了很多关于文件的类,通过这些类能够对文件系统进行操作,如文件读写、文件信息获取、文件复制或重命名等。
2. 输入输出设备类
- C语言中,
fopen
打开文件,fread
、fwrite
读写文件,fclose
关闭文件 - C++ 中,
fstream
打开文件,<<
、>>
读写文件,close
关闭文件 - Linux 中,
open
打开文件,read
、write
读写文件,close
关闭文件 (一般开发中很少会直接使用,主要是要理解其背后的原理)
在 Qt 中使用上述的几种方案来读写文件,也是完全可以的。(Linux 这一套,局限于 Linux 系统,Windows 上的 Qt,就需要使用 Windows api) 但是即使如此,Qt还是又封装了一套。 Qt 诞生的太早了,C++还没有“标准化”概念。
咱们在编写 Qt 程序的时候,更推荐使用 Qt 自己提供的这一套文件操作,和QString
等 Qt 内置的类可以很好的配合。
Qt中的文件操作,核心操作也是这么几个部分:打开,读,写,关闭。
QFile
类完成,完成上述文件操作。
QTemporaryFile
: 这个对象销毁,对应的文件就自动删除了
QSaveFile
: 要写入大量数据,写入文件的时候,往往会把旧的文件先清空再写,万一新的数据写写一般,结果出错了。新的数据用不了旧的数据也无了。
如果你想写一个文件,会自动的把内容写到零时文件里(不会破坏原有的文件)等到所有内容都写完了之后,再把旧文件自动删除,并且用新的文件替换旧的文件。(这种策略是一种个广泛常见)
QSerialPort
: 串口一种古老的通信方式,一般是再嵌入式系统上,开发板,通过串口来和开发板之间进行交互。
QProcess
: 相当于是对 fork
/ exec
操作进行封装。
QBuffer
:缓冲区
3. 文件读写类
QFile
QFile(const QString &name)
可以是绝对路径,也可以是相对路径
如果在文档中
QFile
中找不到这些,可以在其父类找。
3.1. 打开open
构造函数中,指定了路径之后,此时直接通过这个版本的 open
打开
OpenMode
: 读方式、写方式、追加写方式…
3.2. 读read / readline/ readAll
QByteArry
很方便转成 QString
3.3. 写write
3.4. 关闭close
关闭的本质是要释放文件描述符表中的表项;文件描述符表存在上限,如果一直打开,不关闭的话,就可能会使文件描述符表被占满,后续再尝试打开,就打开不了了。
4. 读写文件示例
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QFileDialog>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui-></