参考:
Qt 二进制文件读写_w3cschool
https://www.w3cschool.cn/learnroadqt/7nvo1j5k.html
C++ GUI Programming with Qt 4, Second Edition
本地环境:
win10专业版,64位,Qt 5.12
代码已经测试通过。其他例子日后更新。
理论知识
Qt通过QIODevice
提供IO的抽象,按字节块读取文件。常见的有:
名称 | 作用 | 顺序 |
---|---|---|
QFile | 访问本地文件系统或嵌入的资源 | 随机 |
QTemporaryFile | 本地,临时文件 | 随机 |
QBuffer | 读写 QByteArray | 随机 |
QProcess | 运行外部程序,处理进程间通讯 | 顺序,只能访问一遍 |
QTcpSocket | TCP 协议网络数据传输 | 顺序,只能访问一遍 |
QUdpSocket | 传输 UDP 报文 | 顺序,只能访问一遍 |
QSslSocket | 使用 SSL/TLS 传输数据 | 顺序,只能访问一遍 |
注:前三行的随机表示可以在任何位置访问任意次数,也可以使用QIODevice::seek()
来重定位文件指针。
访问方式:
QDataStream
:以二进制的方式访问QTextStream
:以文本方式访问
文件信息管理:
QDir
:文件夹相关事务QFileInfo
:文件相关事务,如查看文件信息
文本文件读写实例:简单
// 文件读写
int main(int argc, char *argv[])
{QCoreApplication app(argc, argv);QString fileName = "example.txt";// 写入文本文件QFile file(fileName);if (file.open(QIODevice::WriteOnly | QIODevice::Text)){QTextStream stream(&file);stream << "Hello, world!" << endl;stream << "This is an example file." << endl;file.close();qDebug() << "File saved.";}else{qDebug() << "Failed to open file for writing.";}// 读取文本文件if (file.open(QIODevice::ReadOnly | QIODevice::Text)){QTextStream stream(&file);while (!stream.atEnd()){QString line = stream.readLine();qDebug() << line;}file.close();}else{qDebug() << "Failed to open file for reading.";}return app.exec();
}
获取文件信息
#include <QFileInfo>
#include <QString>int main()
{QString filePath = "C:/path/to/myfile.txt";QFileInfo fileInfo(filePath);// 判断文件是否存在if (fileInfo.exists()) {qDebug() << "File exists";// 获取后缀QString fileExtension = fileInfo.suffix();// 获取文件名QString fileName = fileInfo.fileName();} else {qDebug() << "File does not exist";}return 0;
}