1. 文件读取
我们想要实现点击pushButton
按钮,进入文件对话框选择文件,上面的lineEdit
框保存文件路径,下面的textEdit
保存文件内容。
1.1. 读取utf-8文件(默认)
方法:
- 打开文件对话框路径——
getOpenFileName();
- 读取文件——
file();
- 文件打开方式——
open();
- 读取文件——
readAll();
- 设置对话框文本——
setText();
- 关闭文件——
close();
//点击选取文件按钮,弹出文件对话框
connect(ui->pushButton,&QPushButton::clicked,[=](){
QString path = QFileDialog::getOpenFileName(this,"打开文件","F:\\Study\\Qt\\Projects\\13_Qt_QFile");
//将路径放入到lineEdit中
ui->lineEdit->setText(path);
//读取内容,放入到 textEdit中
//QFile默认的支持格式是 utf-8
QFile file(path);//参数就是读取文件的路径
//设置打开方式
file.open(QIODevice::ReadOnly);
QByteArray array = file.readAll();
//将读取到的数据 放入textEdit中7
ui->textEdit->setText(array);
//对文件对象进行关闭
file.close();
效果如下:
1.2. 读取其他类型文件(如gbk)
在读取utf-8的基础上,我们添加一个编码格式类
//编码格式类
QTextCodec *codec = QTextCodec::codecForName("gbk");
然后我们将写入文本的数组设置为gbk
ui->textEdit->setText(codec->toUnicode(array));
最终代码如下:
扫描二维码关注公众号,回复:
17357418 查看本文章
//点击选取文件按钮,弹出文件对话框
connect(ui->pushButton,&QPushButton::clicked,[=](){
QString path = QFileDialog::getOpenFileName(this,"打开文件","F:\\Study\\Qt\\Projects\\13_Qt_QFile");
//将路径放入到lineEdit中
ui->lineEdit->setText(path);
//编码格式类
QTextCodec *codec = QTextCodec::codecForName("gbk");
//读取内容,放入到 textEdit中
//QFile默认的支持格式是 utf-8
QFile file(path);//参数就是读取文件的路径
//设置打开方式
file.open(QIODevice::ReadOnly);
QByteArray array;
while(!file.atEnd()){
array += file.readLine();//按行读
}
//将读取到的数据 放入textEdit中7
ui->textEdit->setText(codec->toUnicode(array));
//对文件对象进行关闭
file.close();
效果如下:
可以看到我们成功打开了gbk格式的文件
2. 文件写入
我们简单的对文件末加上一些文字
//进行写文件
file.open(QIODevice::Append);//用追加的方式写
file.write("啊啊啊啊啊");
file.close();
效果如下:
可以看到添加成功了(这是我们运行了多次的缘故)
3. 显示文件信息
除了得到文件的内容外,我们还希望查看文件的具体信息,于是我们可以通过QFileInfo
文件信息类来实现。
- 文件大小——
size();
- 文件后缀——
suffix();
- 文件名称——
fileName();
- 文件路径——
filePath();
- 文件创建日期——
birthTime();
- 文件最后修改日期——
lastModified();
//QFileInfo文件信息类
QFileInfo info(path);
qDebug()<<"大小"<<info.size()<<"后缀名"<<info.suffix()<<"文件名称"<<info.fileName()<<"文件路径"<<info.filePath();
qDebug()<<"创建日期"<<info.birthTime().toString("yyyy/MM/dd hh:mm:ss");
qDebug()<<"最后修改日期"<<info.lastModified().toString("yyyy-MM-dd hh:mm:ss");
效果如下:
补充:
- 更多关于文件信息的函数请参考Qt助手
- 日期要经过转换才能得到纯粹的额日期显示,不然会有其他附加信息。日期的具体显示格式可以自行设置如
yyyy-MM-dd hh:mm:ss
。请参考Qt助手