14.QT-QFile文件,QBuffer缓冲区,QDir目录,QFileSystemWatcher文件系统监视

时间:2021-02-11 04:02:25

Qt中所有与IO相关的类都继承于QIODevice,继承图如下所示:

14.QT-QFile文件,QBuffer缓冲区,QDir目录,QFileSystemWatcher文件系统监视

其中QFile类便是用于文件操作的类

在QT中,将文件当做一种特殊的外部设备对待(比如:串口,usb等就是外部设备)

 

打开设备

写入数据

关闭设备

  • IO操作的本质是读写连续的存储空间数据

 

-顺序存取设备(比如:串口)

只能从头开始顺序的读写数据,不能指定数据的读写位置

-随机存取设备(比如:文件)

可以随机定位到任意位置,进行数据读写,托福必备词汇通过seek()函数实现

  

QFile文本文件操作示例

在Qt中,一个QFile对象便对应着一个文件

 

示例:

打印:

 

由于write和read函数只能支持char参数,如果填入数值型或QSTring型时,则需要转换:

这样转换会显得非常麻烦,所以QT提供了辅助类来简化文本文件/数据文件的读写

 

QDataStream

将写入的数据根据类型转换为二进制数据(适用于数据文件)

 

注意

QDataStream在不同版本中,数据格式可能不同,所以数据文件如果要在不同版本QT程序间传递,还需要考虑版本问题:

 

QTextStream使用示例

注意: endl其实只是加了\n,由于win平台的换行符是\r\n,所以需要加上QIODevice::Text,QT便会自动将\n转为\r\n.

 

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">


文章来源:https://www.cnblogs.com/lifexy/p/8981196.html