QFile 读文件和写文件 QFileInfo获取文件信息

这几个函数都是QFileDialog这个类中的静态函数,可以调用当前系统的文件对话框。具体来讲:

getOpenFileName返回一个被用户选中的文件的路径,前提是这个文件是存在的。

getSaveFileName返回一个被用户选中的文件的路径,这个文件可以是不存在的。

getOpenFileNames返回一个或多个被用户选中的文件的路径,前提是这些文件是存在的。
  
GetOpenFilename相当于Excel打开窗口,通过该窗口选择要打开的文件,并可以返回选择的文件完整路径和文件名。

#include "QtFile.h"
#include <QFile>
#include <QFileDialog>
#include <QFileInfo>
#include <QDateTime>
#include <QDebug>

QtFile::QtFile(QWidget *parent)
	: QWidget(parent)
{
	ui.setupUi(this);

	connect(ui.pushButton_read, SIGNAL(clicked()), this, SLOT(slotReade()));
	connect(ui.pushButton_write, SIGNAL(clicked()), this, SLOT(slotWrite()));
}
void QtFile::slotReade()
{
	//显示标准的“打开”对话框,并获取用户文件名,而不必真正打开任何文件,只是把打开文件名称返回程序。
	//GetOpenFilename相当于Excel打开窗口,通过该窗口选择要打开的文件,并可以返回选择的文件完整路径和文件名。
	QString path = QFileDialog::getOpenFileName(this, "OPen", "../");
	if (!path.isEmpty())
	{
		//文件对象
		QFile file(path);
		//打开文件 只读方式  
		bool isok = file.open(QIODevice::ReadOnly);
		{
#if 0
			//读文件,默认只识别UTF-8编码
			QByteArray array= file.readAll();	//读取所有
			ui.textEdit->setText(array);
#endif
			QByteArray array;
			while (!file.atEnd())
			{
				array += file.readLine();
			}
			ui.textEdit->setText(array);		//设置文本内容
		}
		file.close();

		QFileInfo info(path);
		qDebug() << QString::fromLocal8Bit("文件名字:") << info.fileName().toUtf8().data();
		qDebug() << QString::fromLocal8Bit("文件后缀:") << info.suffix();
		qDebug() << QString::fromLocal8Bit("文件大小:") << info.size();
		qDebug() << QString::fromLocal8Bit("文件创建时间:") << info.created().toString("yyyy-MM-dd hh:mm:ss ddd");
	}
}
void QtFile::slotWrite()
{
	QString path = QFileDialog::getSaveFileName(this, "save", "../", "TXT(*.txt)");
	if (!path.isEmpty())
	{
		//QFile file(path);	
		QFile file;		//创建文件对象
		file.setFileName(path);		//关联文件名字

		bool isOk = file.open(QIODevice::WriteOnly);
		if (isOk)
		{
			//获取编辑区内容
			QString qstr = ui.textEdit->toPlainText();
			//QString 转换成 QByteArray 
			//file.write(qstr.toUtf8());
			file.write(qstr.toStdString().data());	//qstr.toLocal8Bit();		//转换成本地8字节
		}
		file.close();
	}
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值