赞
踩
QIODevice中实现了Qt中的所有I/O方法,其他用到IO的类如QFile、QBuffer、QTcpSocket,都是从这个类继承而来。
QIODevice是抽象类,不能实例化,但是可以用多态技术,来定义一个QIODevice去承接一个从它继承而来的实现类。
在读写之前,open()一个文件时必须先设置正确的OpenMode(如ReadOnly或ReadWrite)。之后就可以调用write()、putChar()向其中write,调用read()、readLine()、readAll()来read。完成read、write后调用close()。
有两种Device:①随机访问;②顺序访问。
①随机访问:调用seek()转移到文件中任意位置,调用pos()查看当前位置。QFile、QBuffer是随机访问的典型;
②顺序访问:不能从任意位置开始。数据读取必须一个接一个。QTcpSocket、QProcess是顺序访问的典型。
如何判断是哪种device呢?调用isSequential()方法。
QIODevice会发射readyRead()当新的数据已经准备好reading,例如,读取的时候,有新的数据到达网络或额外的数据被添加到文件中。我们可以调用bytesAvailable()来判断现在有多少个bytes是准备读取的。当QTcpSocket程序处理异步数据时,经常会有数据不定时的到达,这时bytesAvailable()通常和readyRead()信号联用。当有数据要write时,QIODevice会发射bytesWritten()信号,此时用bytesToWrite()可以知道有多少bytes等待写入。
| Header | #include<QIODevice> |
| qmake | QT += core |
| Inherits | QObject |
| Inherited By | QFileDevice |
| QIODevice(QObject * parent) | 给Parent构造一个 QIODevice |
| QIODevice() | 构造一个QIODevice |
这个enum是用于open()的参数,主要是描述文件打开时采用的device。如果要查看这个device,可以通过openMode()返回。
常用的Mode有ReadOnly、WriteOnly、ReadWrite、Append,对应的device顾名思义。


Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。