马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 不二如是 于 2016-11-4 10:31 编辑
老规矩,先从视觉上感受下这个类的‘雄伟’,然后慢慢开始爬着玩儿~
应用程序中经常需要对设备或者文件进行读取或者写入。
也会对本地文件或者目录进行添加、删除、遍历等操作。
从下面三个方面分开说吧~
- 输入\输出设备
QIODevice类是Qt中所有I\O设备的基础接口类!
为QFile、QBuffer、QTcpSocket等支持读\写数据块的设备提供了一个抽象接口。
所以QIODevice类是抽象类,无法被实例化,只是提供I\O功能。
访问一个设备要经历如下逻辑操作:
使用open()函数打开设备->
制定打开模式->
打开后使用write()或者putChar()进行写入->
使用read()、readLine()、readAll()进行读取->
最后使用close()关闭设备
常见的打开模式如下:
憋急给你翻译下:
常量 | 描述 | QIODevice::NotOpen | 设备没有打开 | QIODevice::ReadOnly | 设备以只读方式打开,此时无法写入 | QIODevice::WriteOnly | 设备以只写方式打开,此时无法读取 | QIODevice::ReadWrite | 设备以读写方式打开 | QIODevice::Append | 设备以附加模式打开,所有的数据都将写入到文件的末尾 | QIODevice::Truncate | 如果可能,设备在打开前会被阻断,先前所有内容将丢失 | QIODevice::Text | 读取时,行结尾终止符会被转换为'\n'
写入时,行结尾终止符会被转换为本地编码,类win‘\r\n’ | QIODevice::Unbuffered | 绕过设备所有的缓冲区 |
QIODevice会区别两种类型的设备:随机存取设备、顺序存储设备
随机存取设备 | 支持使用seek()函数来定位到任意的位置。
文件中的当前位置可以使用pos()函数来获取。
常见类有QFile、QBuffer、QTemporaryFile等 | 顺序存储设备 | 不支持定位到任意的位置,数据必须一次性读取。
pos()和size()函数无法使用
常见类有QTcpSocket、QUpdSocket、QProcess等 |
可以通过isSequential()函数进行判断哈~
通过子类化QIODevice可以为自己的I/O设备提供相同的接口。
只需要重新实现readData()、writeData()两个函数即可~
- 文件级操作
|