QFile
读文本文件,写文本文件。
- ui创建两个Push Button,一个Text Edit
- widget.h
private slots:
void on_pushButtonread_clicked();
void on_pushButton_2write_clicked();
- widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include <QFile>
#include <QFileDialog>
#include <QFileInfo>
#include <QDebug>
#include <QDateTime>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_pushButtonread_clicked()
{
QString path = QFileDialog::getOpenFileName(this, "open", "../", "TXT(*.txt)");
if (path.isEmpty() == false)
{
//文件对象
QFile file(path);
//打开文件,只读方式
bool isOK = file.open(QIODevice::ReadOnly);
if(isOK == true)
{
#if 0
//读文件 默认只识别utf8编码
QByteArray array = file.readAll();
// 显示到编辑区
// ui->textEdit->setText(QString(array));
ui->textEdit->setText(array);
#endif
QByteArray array;
while (file.atEnd() == false) {
//读一行
array += file.readLine();
}
ui->textEdit->setText(array);
}
//关闭文件
file.close();
// 获取文件信息
QFileInfo info(path);
qDebug() << "文件名字:" << info.fileName();
qDebug() << "文件名字:" << info.fileName().toUtf8().data();
qDebug() << "文件后缀:" << info.suffix();
qDebug() << "文件大小:" << info.size();
qDebug() << "创建时间:" << info.created();
qDebug() << "创建时间:" << info.created().toString("yyyy-MM-dd hh:mm:ss");
}
}
void Widget::on_pushButton_2write_clicked()
{
QString path = QFileDialog::getSaveFileName(this, "save", "../", "TXT(*.txt)");
if (path.isEmpty() == false)
{
//文件对象
QFile file;
// 关联文件名字
file.setFileName(path);
//打开文件,只写方式
bool isOK = file.open(QIODevice::WriteOnly);
if(isOK == true)
{
// 获取编辑区内容
QString str = ui->textEdit->toPlainText();
// QString --> QByteArray
// file.write(str.toUtf8());
// 另外的写法 QString --> c++ string --> char *
// file.write(str.toStdString().data());
// 另外的写法 转换为本地编码
file.write(str.toLocal8Bit());
}
file.close();
}
}