今天开始进入 Qt 的另一个部分:文件读写,也就是 IO。文件读写在很多应用程序中都是需要的。Qt 通过 QIODevice 提供了 IO 的抽象,这种设备(device)具有读写字节块的能力。常用的 IO 读写的类包括以下几个:
QFlie访问本地文件系统或者嵌入资源
QTemporaryFile创建和访问本地文件系统的临时文件
QBuffer读写 QByteArray
QProcess运行外部程序,处理进程间通讯
QTcpSocketTCP 协议网络数据传输
QUdpSocket传输 UDP 报文
QSslSocket使用 SSL/TLS 传输数据
QProcess、QTcpSocket、QUdpSoctet 和QSslSocket 是顺序访问设备,它们的数据只能访问一遍,也就是说,你只能从第一个字节开始访问,直到最后一个字节。QFile、QTemporaryFile 和QBuffer 是随机访问设备,你可以从任何位置访问任意次数,还可以使用 QIODevice::seek() 函数来重新定位文件指针。
在访问方式上,Qt 提供了两个更高级别的抽象:使用 QDataStream 进行二进制方式的访问和使用 QTextStream 进行文本方式的访问。这些类可以帮助我们控制字节顺序和文本编码,使程序员从这种问题中解脱出来。
QFile 对于访问独立的文件是非常方便的,无论是在文件系统中还是在应用程序的资源文件中。Qt 同样也提供了 QDir 和QFileInfo 两个类,用于处理文件夹相关事务以及查看文件信息等。 这次我们先从二进制文件的读写说起。
以二进制格式访问数据的最简单的方式是实例化一个 QFile 对象,打开文件,然后使用 QDataStream 进行访问。