详细描述
QIODevice为支持数据块(如QFile、QBuffer和QTcpSocket)读写的设备提供了通用实现和抽象接口。
QIODevice是抽象的,不能实例化,但是通常使用它定义的接口来提供与设备无关的I/O特性。例如,Qt的XML类操作在一个QIODevice指针上,允许它们与各种设备(如文件和缓冲区)一起使用。
在访问设备之前,必须调用open()来设置正确的OpenMode(例如ReadOnly或ReadWrite)。然后可以使用write()或putChar()向设备写入数据,通过调用read()、readLine()或readAll()进行读取。当你用完设备后调用close()。
QIODevice区分了两种类型的设备:随机访问设备和顺序设备。
1. 随机访问设备支持使用seek()查找任意位置。通过调用pos()可以获得文件中的当前位置。QFile和QBuffer是随机访问设备的例子。
2. 顺序设备不支持寻找任意位置。数据必须一次读取。pos()和size()函数不适用于顺序设备。QTcpSocket和QProcess是顺序设备的例子。
您可以使用isSequential()来确定设备的类型。
当有新的数据可供读取时,QIODevice发出readyRead();例如,如果新的数据已经到达网络,或者额外的数据被附加到正在读取的文件中。可以调用bytesAvailable()来确定当前可供读取的字节数。在使用QTcpSocket这样的异步设备进行编程时,通常会将bytesAvailable()和readyRead()信号一起使用,在QTcpSocket这样的异步设备中,数据片段可以及时到达任意点。每次将数据负载写入设备时,QIODevice都会发出bytesWritten()信号。使用bytesToWrite()确定当前等待写入的数据量。
QIODevice的某