QFile file("../sys_database/canshu.txt"); //目标文件路径
if(!file.open(QIODevice::ReadOnly | QIODevice::Text))
{
QMessageBox::critical(this,"警告","文件读取失败!");
return;
}
// 创建一个 QTextStream 对象,用于从文件中读取文本数据。
QTextStream in(&file);
while(!in.atEnd())
{
QString line=in.readLine();
global::canshu.append(line);
}
file.close();
QTextStream 是 Qt 框架中的一个类,用于处理文本流。它提供了一种方便的方法来读取和写入文本数据,特别是与文件和字符串相关的操作。以下是 QTextStream 的一些主要功能和用法:
QString line = in.readLine();
QString content = in.readAll();
- atEnd(): 检查是否到达文件末尾。
while (!in.atEnd())
{QString line = in.readLine(); // 处理行数据
}
- perator<<: 重载的插入运算符,用于写入数据。
QFile file("output.txt");
if (file.open(QIODevice::WriteOnly | QIODevice::Text))
{
QTextStream out(&file);
out << "Hello, World!\n";
file.close();
}
- setCodec(): 设置文本流的编码格式。
QTextStream stream(&file);
stream.setCodec("UTF-8");
- flush(): 刷新缓冲区,确保所有数据都被写入。
stream.flush();
综合示例
#include <QCoreApplication>
#include <QFile>
#include <QTextStream>
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
// 写入文件
QFile writeFile("example.txt");
if (writeFile.open(QIODevice::WriteOnly | QIODevice::Text)) {
QTextStream out(&writeFile);
out << "Hello, World!\n";
out << "This is a test file.\n";
writeFile.close();
} else {
qWarning() << "Could not open file for writing!";
}
// 读取文件
QFile readFile("example.txt");
if (readFile.open(QIODevice::ReadOnly | QIODevice::Text)) {
QTextStream in(&readFile);
while (!in.atEnd()) {
QString line = in.readLine();
qDebug() << line;
}
readFile.close();
} else {
qWarning() << "Could not open file for reading!";
}
return a.exec();
}