QT中对文件的操作—很重要
比如对文件的查找和替换
读文件
Truncate:截断。
QFile file(fileName);
默认打开的是utf8文件。
bool isOk = file.open(QFile::ReadOnly);
打开其他类型的乱码怎么办?
使用下面的方式,强制从utf8转gbk
#include <QTextCodec>
QFile file(fileName);
QTextCodec* codec = QTextCodec::codecForName("gbk");
//打开文件
//指定打开方式
//读文件
//显示文本框
ui->textEdit->setText(codec->toUnicode(array));
读文件
QByteArray array = file.readAll();一次读到末尾
- 只读一行
QByteArray array = file.readLine();
读取多行
while(file.atEnd())//判断读到最后一行
{
array += file.readLine();
}
#include "widget.h"
#include "ui_widget.h"
#include <QFile>
#include <QFileDialog>
#include <QMessageBox>
#include <QPushButton>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
connect(ui->selectFile,&QPushButton::clicked,this,[=](){
QString fileName= QFileDialog::getOpenFileName(this,"openfile","");
if(fileName.isEmpty() == true)
{
QMessageBox::warning(this,"warning","打开失败");
return;
}
ui->lineEdit->setText(fileName);
//创建对象
QFile file(fileName);
//指定打开方式 --有返回值
bool isOk = file.open(QFile::ReadOnly);
if(isOk == false)
{
QMessageBox::critical(this,"ERROR","File open Failed");
}
//读文件
QByteArray array = file.readAll();
//显示文本框
ui->textEdit->setText(array);
//文件读写完成
//关闭文件
file.close();
});
}
Widget::~Widget()
{
delete ui;
}
写文件
QTextCodec:设置读取文本的格式(文件转码)
#include <QTextCode>
toUtf8()可以将QString类型转为QByteArray
QString str = “lalalalla”;
str.toUtf8();
char buf[55] = {"1111"};
file.write(buf,strlen(buf));
file.write(QString("llala").toUtf8());
file.write(buf);
文件属性
#include <QFileInfo> //文件属性
#include<QDateTime> //想要获取事件信息
QFileInfo info("/home/yangyu/DailyFILE/picture/39.jpg");
qDebug()<<"文件名称"<<info.fileName();//获取文件名
qDebug()<<"文件后缀"<<info.suffix();
qDebug()<<"文件大小"<<info.size();
qDebug()<<"文件路径"<<info.filePath();
qDebug()<<"文件创建时间"<<info.created().toString("yyyy-MM-dd hh:mm:ss");
qDebug()<<"文件修改时间"<<info.lastModified().toString("yyyy-MM-dd hh:mm:ss");