Qt5 文件类图
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()函数来重新定位文件访问位置指针。
示例代码:
#include <QApplication>
#include <QWidget>
#include <QFileDevice>
#include <QFile>
#include <QDebug>
#include <QDir>
int main(int argc, char **argv)
{
QApplication a(argc, argv);
//QWidget w;
QFile file("in.txt"); //txt文件目录应当注意
if(!file.open(QIODevice::ReadOnly | QIODevice::Text))
{
qDebug() << "Open file failed.";
qDebug() << QDir::currentPath();
return -1;
}
else
{
while(!file.atEnd())
{
qDebug() << file.readLine();
}
}
// w.show();
return a.exec();
}
代码中应当注意的点有如下:
在我测试以上代码时,发现txt文件并不是与exe文件在同一目录,否则会打开失败。应当把txt文件放在更上一级的目录,比如我的exe文件在
E:\code\QT\build-QFile-Desktop_Qt_5_12_0_MinGW_64_bit-Debug\debug
那么txt文件应当放在
E:\code\QT\build-QFile-Desktop_Qt_5_12_0_MinGW_64_bit-Debug
open函数如下:
[override virtual] bool QFile::open(QIODevice::OpenMode mode)
The mode must be QIODevice::ReadOnly, QIODevice::WriteOnly, or QIODevice::ReadWrite. It may also have additional flags, such as QIODevice::Text and QIODevice::Unbuffered.
该文章部分内容取自Qt学习之路