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


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


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

  • 相关阅读:
    Docker大会的新福利:LinuxKit 和 Moby 开源项目
    NS3
    (OK) NS3
    MPTCP
    Utilizing multi-core processors in NS-2
    (OK) Fedora 24
    error compiling gcc: undefined reference to libc_name_p
    gccxml
    NS3
    NS3
  • 原文地址:https://www.cnblogs.com/xiongjim/p/9673910.html
Copyright © 2020-2023  润新知