之前總結了幾種用C++讀寫文本文件的方法,這幾天用Qt時大概學了一下用Qt中的Qfile和QTextStream讀寫文本文件,在此做個記錄。
之前對C++讀寫文本文件的幾種方法比較:https://blog.csdn.net/qq_44894692/article/details/103618356
Qfile讀取文本文件:
void readwrite::readfile()
{
QString path = QFileDialog::getOpenFileName(this, "open", "../", "txt(*.txt)");//讀取文件路徑
if (!path.isEmpty())
{
QFile file(path);
bool isok = file.open(QIODevice::ReadOnly);//打開方式爲只讀
if (isok)
{
QByteArray array = file.readAll();//讀取文本中全部文件
ui.textBrowser->setText(QString(array));
}
file.close();//關閉文件
}
}
Qfile寫出文本文件:
void readwrite::writefile()
{
QString path = QFileDialog::getSaveFileName(this, "save", "../", "txt(*.txt)");//寫出文件的路徑
if (!path.isEmpty())
{
QFile file(path);
bool isok = file.open(QIODevice::WriteOnly);//打開方式爲只寫
if (isok)
{
QString str = ui.textBrowser->toPlainText();//獲取文本框中的內容
file.write(str.toUtf8());
}
file.close();
}
}
QTextStream讀取文本文件:
void readwrite::readfile()
{
QString path = QFileDialog::getOpenFileName(this, "open", "../", "txt(*.txt)");
if (!path.isEmpty())
{
QFile file(path);
bool isok = file.open(QIODevice::ReadOnly);
if (isok)
{
QTextStream filestream(&file);//QTextStream 與file關聯
QString str;
filestream.setCodec("UTF-8");
while (filestream.atEnd()==false)
{
str.append(filestream.readLine());//逐行讀取
str.append("\n");
//str = filestream.readAll();//一次性讀取全部文件
}
ui.textBrowser->setText(str);
}
file.close();
}
}
QTextStream寫出文本文件:
void readwrite::writefile()
{
QString path = QFileDialog::getSaveFileName(this, "save", "../", "txt(*.txt)");
if (!path.isEmpty())
{
QFile file(path);
bool isok = file.open(QIODevice::WriteOnly);
if (isok)
{
QTextStream filestream(&file);//QTextStream 與file關聯
QString str = ui.textBrowser->toPlainText();
filestream << str;//寫出文件
qDebug() << str;
}
file.close();
}
}
使用Qt讀寫文本文件通常使用Qfile與QTextStream 結合,因爲QTextStream 可以逐行讀取,對於處理數據要相對方便一些,而且Qt提供了較多的函數接口,較C++要更快速便捷。