Qt 通过 QIODevice 提供了对 I/O 设备的抽象,这些设备具有读写字节块的能力。下面是 I/O设备的类图:
* QIODevice:所有 I/O 设备类的父类,提供了字节块读写的通用操作以及基本接口;
* QFlie:访问本地文件或者嵌入资源;
* QTemporaryFile:创建和访问本地文件系统的临时文件;
* QBuffer:读写 QByteArray;
* QProcess:运行外部程序,处理进程间通讯;
* QAbstractSocket:所有套接字类的父类;
* QTcpSocket: TCP 协议网络数据传输;
* QUdpSocket:传输 UDP 报文;
* QSslSocket:使用 SSL/TLS 传输数据;
* QFileDevice: Qt5 新增加的类,提供了有关文件操作的通用实现
这其中, QProcess、 QTcpSocket、 QUdpSoctet 和 QSslSocket 是顺序访问设备。所谓“顺序访问”,是指它们的数据只能访问一遍:从头走到尾,从第一个字节开始访问,直到最后一个字节,中途不能返回去读取上一个字节; QFile、 QTemporaryFile 和 QBuffer 是随机访问设备,可以访问任意位置任意次数,还可以使用 QIODevice::seek() 函数来重新定位文件访问位置指针。
我们通常会将文件路径作为参数传给 QFile 的构造函数。不过也可以在创建好对象最后,使用setFileName() 来修改。 QFile 需要使用 /