程序员笔记 (三)Qt QFile QByteArray QDataStream QDir


aihuafeng66t
克里斯蒂亚诺诺 2024-01-12 13:51:27 52733 赞同 0 反对 0
分类: 资源 标签: 运维
程序员笔记 (三)Qt QFile QByteArray QDataStream QDir

(一)QFile

open里的打开模式为QIODevice::WriteOnly、QIODevice::ReadWrite、QIODevice::Append这三种的话,文件不存在则会自动创建出一个空文件出来。其他打开模式就不行。

open打开的几种模式如下:

QIODevice::ReadOnly 以只读方式打开文件

QIODevice::WriteOnly 只写方式

QIODevice::ReadWrite 读写方式

QIODevice::Append 追加模式打开,新写入文件的数据添加到文件尾部

QIODevice::Truncate 截取方式打开文件,文件原有的内容全部被删除

QIODevice::Text 文本方式打开文件,读取时“\n”被自动翻译为换行符

这些取值可以用“|”组合使用,例如 QIODevice::ReadOnly | QIODevice::Text 表示以只读和文本方式打开文件。

QFile判断文件是否存在的方法

最准确的用QFileInfo::isFile()来判断

b.QFileInfo::isDir()或者QDir::exists()准确判断文件夹

c.QFileInfo::exists()或QFile::exists()判断出来的不管是文件还是文件夹的名字都会出来

图片

(二)QByteArray

QByteArray类

提供一个字节数组,QByteArray可用于存储原始字节(包括“\ 0” )和传统的8位 “\ 0” 端接字符串 . 使用QByteArray比使用const char *更方便.

除了QByteArray之外,Qt还提供了QString类来存储字符串数据。对于大多数用途,QString是您要使用的类。它存储16位Unicode字符,使您可以轻松地在应用程序中存储非ASCII /非拉丁字符。此外,QSt API在Qt API中始终使用。 

QByteArray适合的两个主要情况是当您需要存储原始二进制数据,并且当内存保护至关重要时(例如,使用嵌入式Linux的Qt)

初始化QByteArray

方法一:const char *将其传递给其构造函数。例如,以下代码创建一个大小为5的字节数组, 

其中包含数据“Hello”:

QByteArray ba("Hello");

(三)QDataStream 

将二进制文件写入流:

QFile file("file.dat");

file.open(QIODevice::WriteOnly);

QDataStream out(&file);

out << QString("the answer is");

out << (qint32)42;

从流中读取二进制文件:

QFile file("file.dat");

file.open(QIODevice::ReadOnly);

QDataStream in(&file);

QString str; qint32 a;

in >> str >> a;

每一项被写入的数据,都是按一种预定义的二进制格式写入的,改格式取决于具体每一项的类型。

而QDataStream支持的类型包括QBrush,QColor,QDateTime等等。

(四)QDir

QDir类提供了访问系统目录结构及其内容的与平台无关的方式。

头文件:#include < QDir >

QDir类用来操作路径名及底层文件系统,获取关于目录路径及文件的相关信息,也可以用来获取Qt资源系统的文件信息。
QDir类使用相对或绝对文件路径来指向一个文件/目录。

QDir类对象所关联的目录路径可以使用path()函数获得,可以使用setPath()方法来设置新的路径;

可以使用方法absolutePath()来获得目录的绝对路径。

目录名可以使用dirName()方法来获得,该方法返回绝对路径中的最后一个项目,即目录名,但如果QDir关联的是当前工作目录,则返回"."。

可以使用mkdir()方法来创建一个目录;

使用rename()方法来对关联目录进行重命名;

使用rmdir()方法来移除一个目录;

使用exists()方法检测目录是否存在;

使用refresh()方法来刷新目录内容。

其余方法详见QDir类的API文档。

2. 文件及目录内容

文件系统中目录中一般包括文件、子目录及符号链接;

可以使用count()方法来获得QDir类对象关联的目录中的条目数目;

可以使用entryList()获取所有条目的名称;

可以使用entryInfoList()来获取条目的QFileInfo内容。

可以使用filePath()及absoluteFilePath()来获得QDir中指定文件的路径名,但这两个函数均不检查指定的文件是否存在;

可以使用remove()方法来删除指定文件;

可以使用过滤器来获取指定类型的文件,当文件符合过滤器指定条件时被保留;

过滤器中的内容实际上是一个stringList。

原文链接:https://blog.csdn.net/ligare/article/details/124494533

https://blog.csdn.net/Aidam_Bo/article/details/85778012

https://blog.csdn.net/qq_38315190/article/details/80665212

https://blog.csdn.net/weixin_48465741/article/details/115759012

如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!

评价 0 条
克里斯蒂亚诺诺L1
粉丝 0 资源 831 + 关注 私信
最近热门资源
银河麒麟桌面操作系统备份用户数据  130
统信桌面专业版【全盘安装UOS系统】介绍  129
银河麒麟桌面操作系统安装佳能打印机驱动方法  120
银河麒麟桌面操作系统 V10-SP1用户密码修改  108
麒麟系统连接打印机常见问题及解决方法  30
最近下载排行榜
银河麒麟桌面操作系统备份用户数据 0
统信桌面专业版【全盘安装UOS系统】介绍 0
银河麒麟桌面操作系统安装佳能打印机驱动方法 0
银河麒麟桌面操作系统 V10-SP1用户密码修改 0
麒麟系统连接打印机常见问题及解决方法 0
作者收入月榜
1

prtyaa 收益393.62元

2

zlj141319 收益218元

3

1843880570 收益214.2元

4

IT-feng 收益210.13元

5

风晓 收益208.24元

6

777 收益172.71元

7

Fhawking 收益106.6元

8

信创来了 收益105.84元

9

克里斯蒂亚诺诺 收益91.08元

10

技术-小陈 收益79.5元

请使用微信扫码

加入交流群

请使用微信扫一扫!