Qt:Qfile與QTextStream讀寫文本文件

之前總結了幾種用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++要更快速便捷。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章