zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    LeetCode 242. Valid Anagram (验证变位词)
    LeetCode 205. Isomorphic Strings (同构字符串)
    LeetCode 204. Count Primes (质数的个数)
    LeetCode 202. Happy Number (快乐数字)
    LeetCode 170. Two Sum III
    LeetCode 136. Single Number (落单的数)
    LeetCode 697. Degree of an Array (数组的度)
    LeetCode 695. Max Area of Island (岛的最大区域)
    Spark中的键值对操作
    各种排序算法总结
  • 原文地址:https://www.cnblogs.com/xiongjim/p/9673910.html
Copyright © 2011-2022 走看看