QIODevice类是Qt中所有I/O设备基础接口,QIODevice是抽象类无法实例化。
QIODevice类为QFile,QBuffer和QTcpSocker等提供支持读写数据块的设备提供一个抽象接口。
| open(QIODevice::OpenModeFlag) | 打开设备,必须设置打开模式 |
| close() | 关闭文件 |
| isOpen() | 判断是否打开 |
| write() | 写入 |
| putChar() | 写入 |
| read() | 读取 |
| readData() | 读取固定字节数数据 |
| readLine() | 读取一行 |
| readAll () | 读取全部 |
| getChar() | 读取一个字符 |
| atEnd() | 是否在文件末尾 |
| peek(X) | 查看最多X字节 |
| setOpenMode() | 设置打开模式 |
| size() | 返回设备大小 |
| skip(X) | 跳过X个字节 |
| ungetChar() | 撤销getChar操作 |
open(QIODevice::OpenModeFlag)
使用打开方式时,可以使用 | 使用多个打开方式
| QIODevice::NotOpen | 设备未打开 |
| QIODevice::ReadOnly | 设备已打开以供读取 |
| QIODevice::WriteOnly | 设备已打开以进行写入。请注意,对于文件系统子类(例如 QFile),此模式意味着截断,除非与 ReadOnly、Append 或 NewOnly 结合使用。 |
| QIODevice::ReadWrite | 设备已打开,可供读取和写入 |
| QIODevice::Append | 设备以追加模式打开,以便将所有数据写入文件末尾 |
| QIODevice::Truncate | 如果可能,设备在打开之前会被截断。设备的所有早期内容都将丢失 |
| QIODevice::Text | 读取时,行尾终止符将转换为“\n”。写入时,行尾终止符将转换为本地编码,例如 Win32 的“\r\n”。 |
| QIODevice::Unbuffered | 将绕过设备中的任何缓冲区 |
| QIODevice::NewOnly | 文件不存在,创建并打开该文件操作系统保证您是唯一创建和打开文件的人(Qt5.11新加) |
| QIODevice::ExistingOnly | 文件存在,此标志必须与只读、只写或读写一起指定。Qt5.11新加) |
常用的信号:
| aboutToClose() | 设备关闭 |
| byteWrite() | 有数据写入 |
| readyRead() | 数据被读取 |
| readChannelDone() | 当此设备中的输入(读取)流关闭时 |
QIODevice会区分两种类型设备:随机存储和顺序存储设备:
使用isSequential()来判断设备类型
- 随机存储设备支持seek()函数来定位到任意位置,文件中可以使用pos()函数获取
- QFile
- QBuffer
- 顺序存储设备不支持定位到任意为置,数据必须一次性读取
- QTcpSocket
- QProcess