19、Qfile文件读写操作

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助手

4. 相关程序文件参考

13_Qt_QFile.zip

猜你喜欢

转载自blog.csdn.net/qq_63388834/article/details/135166304
今日推荐