目录
描述
输⼊输出设备类
打开/读/写/关闭
使用
先初始化,创建出大致的样貌
输入框设置
绑定槽函数
保存文件
打开文件
提取文件属性
描述
在C/C++ Linux 中我们都接触过关于文件的操作,当然 Qt 也会有对应的文件操作的
⽂件操作是应⽤程序必不可少的部分。Qt 作为⼀个通⽤开发库,提供了跨平台的⽂件操作能⼒。Qt提供了很多关于⽂件的类,通过这些类能够对⽂件系统进⾏操作,如⽂件读写、⽂件信息获取、⽂件复制或重命名等
输⼊输出设备类
在 Qt 中,⽂件读写的类为 QFile 。QFile 的⽗类为 QFileDevice ,QFileDevice 提供了⽂件交互操作的底层功能。 QFileDevice的⽗类是 QIODevice,QIODevice 的⽗类为 QObject ,QIODevice 是 Qt 中所有输⼊输出设备(input/output device,简称 I/O 设备)的基础类,I/O 设备就
是能进⾏数据输⼊和输出的设备,例如⽂件是⼀种 I/O 设备,⽹络通信中的 socket 是 I/O 设备,串⼝、蓝⽛等通信接⼝也是 I/O 设备,所以它们也是从 QIODevice 继承来的。Qt 中主要的⼀些I/O 设备类的继承关系如下图所⽰:
• QFile 是⽤于⽂件操作和⽂件数据读写的类,使⽤ QFile 可以读写任意格式的⽂件。
• QSaveFile 是⽤于安全保存⽂件的类。使⽤ QSaveFile 保存⽂件时,它会先把数据写⼊⼀个临时⽂件,成功提交后才将数据写⼊最终的⽂件。如果保存过程中出现错误,临时⽂件⾥的数据不会被写⼊最终⽂件,这样就能确保最终⽂件中不会丢失数据或被写⼊部分数据。在保存⽐较⼤的⽂件或复杂格式的⽂件时可以使⽤这个类,例如从⽹络上下载⽂件等。
• QTemporaryFile 是⽤于创建临时⽂件的类.使⽤函数 QTemporaryFile::open() 就能创建⼀个⽂件名唯⼀的临时⽂件,在QTemporaryFile 对象被删除时,临时⽂件被⾃动删除。
• QTcpSocket 和 QUdpSocket 是分别实现了 TCP 和 UDP 的类。
• QSerialPort 是实现了串⼝通信的类,通过这个类可以实现计算机与串⼝设备的通信。
• QBluetoothSocket 是⽤于蓝⽛通信的类。⼿机和平板计算机等移动设备有蓝⽛通信模块,笔记本电脑⼀般也有蓝⽛通信模块。通过QBluetoothSocket类,就可以编写蓝⽛通信程。如编程实现笔记本电脑与⼿机的蓝⽛通信。
• QProcess 类⽤于启动外部程序,并且可以给程序传递参数。
• QBuffer 以⼀个 QByteArray 对象作为数据缓冲区,将 QByteArray 对象当作⼀个 I/O 设备来读写
Qt相关的继承
打开/读/写/关闭
Qt 中对这四个重要的操作进行了封装
打开
读
读 继承自 QFile 的父父类也就是 QIODevice 之中
写
写 也继承自 QFile 的父父类也就是 QIODevice 之中
关闭
关闭 也继承自 QFile 的父父类也就是 QIODevice 之中
使用
实现一个功能,左上角有一个按钮,点击按钮可以选择打开文件或者保存文件,下面的输入框
先初始化,创建出大致的样貌
输入框设置
先进行测试,信号槽是否功能正常
绑定槽函数
保存文件
图下我们已经保存下来了
记事本打开正常
打开文件
首先我们修改文本内容
如下,我们成功打开了文件,并且读取到了文件中的数据
这里我们需要注意,这里只能够读取文本文件,二进制文件是读取不了的,要想读取二进制文件,需要用其他的函数去读取
提取文件属性
在Qt中 我们可以使用 QFileInfo 这个类来获取打开文件的各种属性
QFileInfo 是 Qt 提供的⼀个⽤于获取⽂件和⽬录信息的类,如获取⽂件名、⽂件⼤⼩、⽂件修改⽇期等。QFileInfo类中提供了很多的⽅法,常⽤的有:
• isDir() 检查该⽂件是否是⽬录;
• isExecutable() 检查该⽂件是否是可执⾏⽂件;
• fileName() 获得⽂件名;
• completeBaseName() 获取完整的⽂件名;
• suffix() 获取⽂件后缀名;
• completeSuffix() 获取完整的⽂件后缀;
• size() 获取⽂件⼤⼩;
• isFile() 判断是否为⽂件;
• fileTime() 获取⽂件创建时间、修改时间、最近访问时间等;
需要知道的是C++是在 C17的标准库中才引入了相关的操作
QFileInfo 里面有很多函数,文档中可以看到