编程学习
Qt学习13:Qt文件操作
00 分钟
2023-6-30
2023-11-23
type
status
date
slug
summary
tags
category
icon
password
Email
文章首发于我的个人博客:欢迎大佬们来逛逛

QFile

QFile是一个用于读写文本、二进制文件和资源的I/O设备。 QFile可以单独使用,或者更方便地与QTextStreamQDataStream一起使用。
文件名通常在构造函数中传递,但它可以在任何时候使用setFileName()设置。 setFileName可以重新打开一个文件。
可以使用exists检查文件是否存在,并使用remove()删除文件。 (更高级的文件系统相关操作由QFileInfo和QDir提供。
常用函数:
  • 构造函数打开一个文件
  • fileName:输出文件的名称
  • size:输出文件所占的字节大小
  • read:读取一个文件
  • readLine:读取文件的一行
  • readAll:读取文件的所有
  • open:打开文件
  • close:关闭文件
  • flush:刷新
  • exist:检查文件是否存在
  • remove:删除文件
 

文本流类

QTextStream类提供了对于字符数据的输入输出的操作。
构造函数:
注意第一个和第二个的区别:如果传递的是一个QByteArray,则默认时只读的,重载了输入流。
如果传递的是QByteArray的地址,则是可读可写的,重载了输出流。
  • 通过 >> 可以重定向输入。
  • 通过 << 可以重定向输出。

QDataStream

QDataStream提供了以二进制字节的形式进行操作。
常用于序列化与反序列化。
  • 序列化:将数据通过QDataStream存储在QByteArray中
  • 反序列化:将数据通过QDataStream从QByteArray中读取出来。

QFileInfo

QFileInfo类提供与系统无关的文件信息
 

QDir

QDir类提供对目录结构及其内容的访问
QDir可以进行类似于命令行的操作。

QFileSystemWatcher

QFileSystemWatcher类提供了一个接口,用于监视文件和目录的修改。
当文件被修改、重命名或从磁盘中删除时,将发出fileChanged()信号。
类似地,当目录或其内容被修改或删除时,也会发出directoryChanged()信号。 注意,一旦文件被重命名或从磁盘中删除,QFileSystemWatcher就会停止监视文件,而目录则会从磁盘中删除。

QStandardPaths

QStandardPaths类提供了访问标准路径的方法。 所谓系统标准路径指的是本地文件系统中,用户的特定目录或系统的配置目录。比如在Windows系统中的“我的文档”,“视频”,“图片”等目录位置。
对于一个大型项目,系统的标准目录是保存数据,配置信息的一个非常有用的地方。例如,一个应用程序需要将下载好的文档保存在本地文件系统的某个地方,而它不能假设某个定好的路径是存在于磁盘上的。有的人可能会将这个文档保存在应用程序所在的工作目录中,当然这是个好方法,但有时应用程序并不希望将数据放在工作目录中,这是因为:
  • 这会使得程序工作目录变得复杂,让用户来干预工作目录,这无疑是一件危险的事情,很可能会破坏程序。
  • 有的程序会希望工作目录是只读的,所以禁止其它用户来对其进行修改。
  • 如果某些配置文件是和其它程序是共享的,如若放置这些文件在某个程序的工作目录中,显然是不明智的做法,而最好的做法就是放在这些标准目录中啦。
对于系统标准目录,我们可以认定它是必然存在的(即使不存在,也可自动创建),但是不同的操作系统,可能有不一样的系统标准目录。例如“我的文档”目录位置
  • Windows:C:/Users/username/Documents
  • MacOs :~/Documents
  • Linux : ~/Documents
  • Android :/Documents,//Documents
  • IOS :/Documents
如果想要做跨平台的系统,像这些路径,你都得想办法获取,这只是一个我的文档,如果再加上“下载”,“图片”等标准路径,想想是不是都很麻烦。
然而,Qt却给我们提供了非常方便的类来获取这些标准目录路径,它就是马上要学习的QStandardPaths类。所有函数均为静态函数

枚举:标准位置

enum QStandardPaths::StandardLocation 描述了各种路径的位置,可用以下函数查询。
  • QString displayName(QStandardPaths::StandardLocation type)
    • 根据路径类型,返回对应的本地路径名称,未找到返回空QString。
      Example
  • QString writableLocation(QStandardPaths::StandardLocation type)
    • 根据路径类型,返回对应的本地路径,未找到返回空QString。
      Example
  • QStringList standardLocations(QStandardPaths::StandardLocation type)
    • 根据路径类型,返回该类型对应的所有目录路径。 如果可以确定的话,目录列表从高优先级到低优先级排序。 如果type没有定义,则此列表为空
      Example

在指定位置查找文件

  • QString findExecutable(const QString &executableName, const QStringList &paths = QStringList())
在指定的路径中查找名为executableName的可执行文件,如果paths为空,则在系统路径中查找。 系统路径指PATH环境变量的值。 如果存在,返回可执行文件的绝对文件路径,如果没有找到,则返回空字符串。
Example
  • QString locate(QStandardPaths::StandardLocation type, const QString &fileName, QStandardPaths::LocateOptions options = LocateFile)
  • QStringList locateAll(QStandardPaths::StandardLocation type, const QString &fileName, QStandardPaths::LocateOptions options = LocateFile)
    • 根据标准目录类型,在该目录中查找名为fileName的文件或目录。 返回找到的文件或目录的完整路径(取决于options)。 如果找不到这样的文件或目录,则返回一个空字符串
Example

QSettings

QSettings提供了关于注册表的操作:

评论
  • Twikoo
  • Valine