一、QFile 对文件进行读写操作
1、 QFile进行读写操作
2、 QFile file( path 文件路径)
3、 读
(1) file.open(打开方式) QIODevice::readOnly
(2) 全部读取 file.readAll() 按行读 file.readLine() atend()判断是否读到文件尾
(3)默认支持编码格式 utf-8
(4)利用编码格式类 指定格式 QTextCodeC
(5)QTextCodec * codec = QTextCodec::codecForName(“gbk”);
(6) ui->textEdit->setText( codec->toUnicode(array) );
(7)文件对象关闭 close
4、 写
(1) file.open( QIODevice::writeOnly 或 Append)
(2) file.write(内容)
(3) file.close 关闭
5、读写模式
QIODevice::ReadOnly //以只读的方式打开(文件不存在出错)
QIODevice::WriteOnly //以只写的方式打开,打开时文件内原内容清空(文件不存在则创建)
QIODevice::ReadWrite //以读写的方式打开文件
QIODevice::Append //已追加的方式打开文件,新写入文件的数据添加到文件尾部
QIODevice::Truncate //以重写的方式打开文件,文件打开时原有内容全部清空
QIODevice::Text //以文本的方式打开文件。读取时,将' '翻译为换行符;写入时,将行结束符转换成本地格式
二、代码
#include "widget.h"
#include "ui_widget.h"
#include <QFileDialog>
#include <QFile>
#include <QTextCodec>
#include <QFileInfo>
#include <QDebug>
#include <QDateTime>
#include <QString>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
static QString path;
//点击选取文件按钮,弹出文件对话框
connect(ui->pushButton, &QPushButton::clicked, [=](){
//显示打开文件窗口
path = QFileDialog::getOpenFileName(this, "打开文件","/home/xcl/qt");//返回一个文件的路径
//将路径放入到lineEdit中
ui->lineEdit->setText(path);//在lineEdit显示路径
//编码格式类
//QTextCodec * codec = QTextCodec::codecForName("gbk");//如果文件格式为GBK,需要做格式转码
//读取内容 放入到 textEdit中
// QFile默认支持的格式是 utf-8
QFile file(path); //参数就是读取文件的路径
//设置打开方式
file.open(QIODevice::ReadOnly);//只读模式
//第一种方式
// QByteArray array = file.readAll();//全部读出 ,返回值为 QByteArray
//第二种方式
QByteArray array;
while( !file.atEnd())//判断是否读到文件尾
{
array += file.readLine(); //按行读,追加
}
//将读取到的数据 放入textEdit中,显示出来
ui->textEdit->setText(array);//类型隐式转换
//ui->textEdit->setText( codec->toUnicode(array) );//格式转码
file.close();
});
//写文件
connect(ui->pushButton_2, &QPushButton::clicked, [=](){
QFile file(path);
//进行写文件
file.open(QIODevice::Append); //用追加方式进行写
file.write("我是新写入的数据!!!");
file.close();
});
}
Widget::~Widget()
{
delete ui;
}
三、效果
四、打印文件信息
首先包含头文件
#include <QFileInfo>
#include <QDebug>
#include <QDateTime>
//QFileInfo 文件信息类
QFileInfo info(path);//参数为文件的路径
qDebug() << "大小" << QString::number(info.size()) << "后缀名" << info.suffix() << " 文件名称:"<<info.fileName() << " 文件路径:"<< info.filePath();
qDebug() << "创建日期" << info.created().toString("yyyy/MM/dd hh:mm:ss ap t");
qDebug() << "最后修改日期"<<info.lastModified().toString("yyyy-MM-dd hh:mm:ss");
五、与QTextStream结合使用
//输入文本流
QFile file("output.txt");
if(file.open(QFile::WriteOnly | QFile::Truncate))
{
QTextStream out(&file); //创建写入流
out << "PI:" << qSetFieldWidth(10) << left << 3.1415926;//写入数据
out << "
//写入数据
}
file.close();
//输出文件流
QFile fileOpen("output.txt");
if(! fileOpen.open(QFile::ReadOnly | QIODevice::Text))
qDebug() << fileOpen.errorString();
QTextStream in(&fileOpen); //创建输出流
while(!in.atEnd())
{
QString oneLine = in.readLine(); //读取一行
qDebug() << oneLine;
}