勇哥的VC++应用框架学习之QT(7) 文件读写、文件信息、文本流数据流

这方面的应用,主要用来读写配置文件、写生产数据文件这些方面。

也算是经常用到的功能了。


image.png

image.png


代码:

#include "QtForOpencv.h"
#include <opencv2\opencv.hpp>
#include <opencv2\core.hpp>
#include <opencv2\imgcodecs.hpp>
#include <opencv2\imgproc.hpp>
#include <QFileDialog>
#include <qmessagebox.h>
#include <QTextCodec>
#include <qdatetime.h>
#include <QTextStream>

using namespace cv;
using namespace std;
QtForOpencv::QtForOpencv(QWidget *parent)
	: QWidget(parent)
{
	ui.setupUi(this);
	
	connect(ui.btnOpenFile, &QPushButton::clicked, [=]{
		QString path = QFileDialog::getOpenFileName(this, "打开文件", "E:\\");
		if (path.isEmpty()){
			QMessageBox::warning(this, "警告", "打开失败");
		}
		else
		{
			ui.lineEditPath->setText(path);
			QFile file(path);
			file.open(QFileDevice::ReadOnly);
			QByteArray ary;
			ary = file.readAll();
			ui.textEditMsg->setText(ary);
			file.close();

			//转换编码
			file.open(QFileDevice::ReadOnly);
			QTextCodec* codec = QTextCodec::codecForName("gbk");
			while (!file.atEnd()){
				ary += file.readLine();
			}
			ui.textEditMsg->append(codec->toUnicode(ary));
			file.close();

			//写文件
			file.open(QFileDevice::Append);
			file.write("this is a test");
			file.close();

			//获取文件信息
			QFileInfo info(path);
			qDebug() << "路径:" << info.filePath() << "名称:" <<
				info.fileName() << "文件大小" << info.size() <<
				"后缀名:" << info.suffix();
			qDebug() << "创建日期: " << info.created().toString("yyyy-MM-dd hh:mm:ss");
			qDebug() << "修改日期: " << info.lastModified().toString("yyyy-MM-dd hh:mm:ss");
		
		
			//文件流
			//分为: 文本流(基础数据类型)和数据流(大型QImage)
			
			//文本流
			QFile file("1.txt");
			file.open(QFileDevice::WriteOnly);
			QTextStream stream(&file);
			stream << QString("hellow qt!") << 12345;
			file.close();

			file.open(QFileDevice::ReadOnly);
			QString str;
			str = stream.readAll();
			qDebug() << str;

			//数据流 二进制 
			QFile file("2.txt");
			file.open(QFileDevice::WriteOnly);
			QDataStream stream(&file);
			stream << QString("hellow qt!") << 2019;
			file.close();
			file.open(QFileDevice::ReadOnly);
			QString str;
			int num;
			stream >> str >> num;
			qDebug() << str << num;

		}

	});

	waitKey(0);

}


在我们保存生产数据的时候,最常用的是保存为csv文件,即逗号分隔的文本文件。

这种扩展名的格式,在excel读取时,可以很好的分列显示。但是这种csv文件格式仍然是一种文本文件,仅是扩展名为csv,而不是txt。


下一篇,勇哥想研究一下非常重要的话题: 多线程、多线程中更新ui界面。

这个话题是能真正用QT来进行开发的关键,没有哪一个程序不会用到它。


--------------------- 

作者:hackpig
来源:
www.skcircle.com
版权声明:本文为博主原创文章,转载请附上博文链接!



本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

会员中心
搜索
«    2024年4月    »
1234567
891011121314
15161718192021
22232425262728
2930
网站分类
标签列表
最新留言
    热门文章 | 热评文章 | 随机文章
文章归档
友情链接
  • 订阅本站的 RSS 2.0 新闻聚合
  • 扫描加本站机器视觉QQ群,验证答案为:halcon勇哥的机器视觉
  • 点击查阅微信群二维码
  • 扫描加勇哥的非标自动化群,验证答案:C#/C++/VB勇哥的非标自动化群
  • 扫描加站长微信:站长微信:abc496103864
  • 扫描加站长QQ:
  • 扫描赞赏本站:
  • 留言板:

Powered By Z-BlogPHP 1.7.2

Copyright Your skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864