C++/Qt:TXT文件读写

分享给有需要的人,代码质量勿喷。

//一、读取内容显示
void TxtReadWrite::xjOpenShowContent()
{
	QString xjPath = QFileDialog::getOpenFileName(this, tr("选择TXT文件"),
                             QCoreApplication::applicationDirPath(), "文本文档(*.txt)");
	if (xjPath.size() > 0)
	{
		ui.lineEdit->setText(xjPath);
		ui.textEdit->clear();
		xjShowTxt(xjPath);
	}
}

void TxtReadWrite::xjShowTxt(QString xjPath)
{
	QFile xjFile(xjPath);
	if (!xjFile.open(QIODevice::ReadOnly))
		return;

	QString xjStr = "\0";
	while (!xjFile.atEnd())
	{
		QString xjLine(xjFile.readLine());
		xjStr += xjLine;
	}
	ui.textEdit->append(xjStr);
	xjFile.close();
}
//二、读取写入
void TxtReadWrite::xjZhSave()
{
	mxjPath = ui.lineEdit->text();
	xjReadTxt(mxjPath, mxjMap);

	QString xjWirtePath = mxjPath + ".txt";
	xjWriteTxt(mxjMap, xjWirtePath);
}

//读取并转换
void TxtReadWrite::xjReadTxt(QString mxjPath, map<int, QString> &mxjMap)
{
	mxjMap.clear();
	QFile xjFile(mxjPath);
	if (!xjFile.open(QIODevice::ReadOnly))
		return;

	QString xjNewLine = "\0";
	QStringList xjStringList;
	int i = -1;
	while (!xjFile.atEnd())
	{
		QString xjLine(xjFile.readLine());

		if (xjLine.contains("开始") || xjLine.contains("结束"))
		{
			xjStringList = xjLine.split('\n');
			xjNewLine = xjStringList.at(0);
			i++;
			mxjMap[i] = xjNewLine;
		}
		else if (!xjLine.contains(","))
		{
			xjStringList = xjLine.split('\n');
			xjNewLine = xjStringList.at(0);
		}
		else
		{
			xjStringList = xjLine.split('\n');
			xjNewLine = xjNewLine + ":" + xjStringList.at(0);
			i++;
			mxjMap[i] = xjNewLine;
		}
	}
	xjFile.close();
}

//写入
void TxtReadWrite::xjWriteTxt(map<int, QString> &mxjMap, QString mxjWritePath)
{
	QFile xjFile(mxjWritePath);
	if (!xjFile.open(QIODevice::WriteOnly | QIODevice::Text))
	{
		return;
	}

	QTextStream stream(&xjFile);
	QString xjLine = "\0";
	for (int i = 0; i < mxjMap.size(); i++)
	{
		xjLine = mxjMap[i];
		stream << xjLine + "\r\n";
	}
	stream.flush();
	xjFile.close();
}
发布了63 篇原创文章 · 获赞 58 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/xinjiang666/article/details/84995255