Qt学习之十七:文件I/O
来源:互联网 发布:macbookair软件推荐 编辑:程序博客网 时间:2024/05/16 11:40
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 需要使用 / 作为文件分隔符,不过,它会自动将其转换成操作系统所需要的形式。例如 C:/windows 这样的路径在 Windows 平台下同样是可以的。
QFile 主要提供了有关文件的各种操作,比如打开文件、关闭文件、刷新文件等。我们可以使用QDataStream 或 QTextStream 类来读写文件,也可以使用 QIODevice 类提供的 read()、readLine()、 readAll() 以及 write() 这样的函数。值得注意的是,有关文件本身的信息,比如文件名、文件所在目录的名字等,则是通过 QFileInfo 获取,而不是自己分析文件路径字符串。
#include "mainwindow.h"#include <QApplication>#include <QFile>#include <QFileInfo>#include <QDebug>#include <QDir>int main(int argc, char *argv[]){ QApplication a(argc, argv); // MainWindow w; // w.show(); //qDebug()<<QDir::currentPath(); QFile file("in.txt"); if(!file.open(QIODevice::ReadOnly|QIODevice::Text)) { qDebug()<<"Open file failed."; return -1; } else { while(!file.atEnd()) { qDebug()<<file.readLine(); } } QFileInfo info(file); qDebug()<<info.isDir(); qDebug()<<info.isExecutable(); qDebug()<<info.baseName(); qDebug()<<info.suffix(); qDebug()<<info.completeBaseName(); return a.exec();}
在这段代码中,我们首先使用 QFile 创建了一个文件对象。这个文件名字是 in.txt。如果你不知道应该把它放在哪里,可以使用 QDir::currentPath() 来获得应用程序执行时的当前路径。只要
将这个文件放在与当前路径一致的目录下即可。然后,我们使用 open() 函数打开这个文件,打开形式是只读方式,文本格式。这个类似于 fopen() 的 r 这样的参数。 open() 函数返回一个bool 类型, 如果打开失败, 我们在控制台输出一段提示然后程序退出。 否则, 我们利用 while 循环,将每一行读到的内容输出。
- Qt学习之十七:文件I/O
- Linux学习之文件I/O操作
- 学习笔记之文件与I/O
- Linux Bash Shell学习(十七):I/O重定向
- UNIX环境编程学习笔记—文件I/O之标准I/O流
- UNIX/LINUX编程学习之文件I/O
- OpenCV学习笔记之“文件I/O,XML/YAML”
- python 学习(二十一)之文件I/O
- Python学习之路---Python文件I/O
- I/O学习之小结
- java学习之i/o
- QT学习笔记之十七 StudentManage
- linux学习---文件I/O和标准I/O
- UNIX环境编程学习笔记(3)——文件I/O之内核 I/O 数据结构
- UNIX环境编程学习笔记(2)——文件I/O之不带缓冲的 I/O
- UNIX环境编程学习笔记(13)——文件I/O之标准I/O流
- Linux系统学习笔记:文件I/O
- AUPE学习第三章------文件I/O
- 安卓小日记练习(4)其中一个item的点击事件(1)
- Socket异步服务器,可以监控客户端的状态,功能有,文字测试,服务端向客户端传输屏幕录像(UDP传输)、监控客户端屏幕(UDP传输),抖动用户窗体、发送文件给用户、扫描客户的C盘目录。
- HTML5标签
- HDU 1995
- linux命令大全(一)
- Qt学习之十七:文件I/O
- Hust oj 1929 走三方,路迢迢水长长(递推)
- Xcode8与以往版本创建window的不
- C#对象间的协作和信息交换(三)从窗体向主窗体传递消息
- HDU5700-区间交
- HTML 全局属性
- Android全球定位系统GPS距离计算-Oak先生
- Oracle视图
- 数据在链路层传播相关时间计算