Qt中所有与IO相关的类都继承于QIODevice,继承图如下所示:
其中QFile类便是用于文件操作的类
在QT中,将文件当做一种特殊的外部设备对待(比如:串口,usb等就是外部设备)
打开设备
写入数据
关闭设备
- IO操作的本质是读写连续的存储空间数据
-顺序存取设备(比如:串口)
只能从头开始顺序的读写数据,不能指定数据的读写位置
-随机存取设备(比如:文件)
可以随机定位到任意位置,进行数据读写,托福必备词汇通过seek()函数实现
QFile文本文件操作示例
在Qt中,一个QFile对象便对应着一个文件
示例:
打印:
由于write和read函数只能支持char参数,如果填入数值型或QSTring型时,则需要转换:
这样转换会显得非常麻烦,所以QT提供了辅助类来简化文本文件/数据文件的读写
QDataStream
将写入的数据根据类型转换为二进制数据(适用于数据文件)
注意
QDataStream在不同版本中,数据格式可能不同,所以数据文件如果要在不同版本QT程序间传递,还需要考虑版本问题:
QTextStream使用示例
注意: endl其实只是加了 ,由于win平台的换行符是 ,所以需要加上QIODevice::Text,QT便会自动将 转为 .
QDataStream使用示例
缓冲区的本质为一段连续的存储空间
- 缓存区分为内部和外部,外部设备便表示外部缓冲区,而 QBuffer类则表示计算机的内部缓冲区
- 在Qt中可以将缓冲区看作一种特殊的IO设备
- QTextStream,QDataStream文件流辅助类也可以直接用于操作缓冲区
QBuffer使用方法:
QT中提供了目录操作类QDir,QDir功能如下:
- 目录分隔符统一使用’/’
- 能够对目录进行任意操作(创建、删除、重命名)
- 能够获取指定目录中的所有条目(文件和文件夹)
- 能够使用过滤字符串获取指定条目
- 能够获取系统中的所有根目录
QDir使用方法如下:
来个示例,写个函数用来读取当前目录/或者文件的大小:
用来监控目录或文件的状态变化
- 能够同时对多个目录/文件进行监控
- 当目录或文件发生改变时,将会触发信号
- 可以通过信号与槽的机制捕捉信号,并做出响应
QFileSystemWatcher信号函数如下所示:
QFsWatcher.h:
main.cpp:
<span "="" src="https://images2018.cnblogs.com/blog/1182576/201805/1182576-20180502164522423-1064535086.gif" width="675" height="487">