Qt中对文件读写操作

本文详细介绍了Qt中QFile类的读写操作,包括不同读写模式的使用,如何读取UTF-8和GBK编码的文件,以及如何逐行读取或读取特定行数的内容。

Qt中自己定义一套对文件的读写操作:QFile
常用的读写模式如下:

  • QIODevice::ReadOnly:文件以只读的形式打开
  • QIODevice::WriteOnly:文件以写的形式打开,该方式写入的新内容会覆盖掉之前的内容。
  • QIODevice::ReadWrite:文件以读写的方式打开
  • QIODevice::Append:文件以追加的方式打开,新写入的内容会被添加到文件的末尾,原来的内容会被保留
  • QIODevice::Text:将每行的结束字符根据具体的环境转换成对应的形式,一般都附带该项
  • QIODevice::Truncate:以截断的方式来打开文件
  • QIODevice::NotOpen:文件没有被打开
一、创建一个窗口程序来选择某一路径下的文件,读取其所有内容

Qt 默认支持格式为UTF-8,如果读取的文件为GBK或者ANSI格式,则需要特别设置读取文件格式。

1、ui页面的设置布局
  • 首先分别添加控件LineEditTextEditPushButtonWidget 。其中LineEditPushButton位于Widget控件中。其整体竖直布局,结果如下:
    在这里插入图片描述
2、使用readAll一次读取所有内容的代码实现如下:

在这里插入图片描述

3、运行的结果如图:

(1)、读取UTF-8格式文件,正常显示如下:

在这里插入图片描述

(2)、读取gbk格式文件时,中文字体将出现乱码,如下图:在这里插入图片描述

4、根据文件编码类型设置对应的编码格式

(1)、设置读取读取编码格式的类为QTextCodec,修改的代码部分如下:
在这里插入图片描述
(2)、运行结果gbk格式文件可以正常读取,但utf-8将会出现乱码

在这里插入图片描述
在这里插入图片描述


二、逐行读取文件内容
  • readLine()逐行读取,并保留换行符等格式。
  • atEnd()判断是否到文件的末尾结束位置
1、以逐行的形式读取文件的全部内容,

(1)、具体代码如下

在这里插入图片描述
(2)、读取的文件全部内容如下:

在这里插入图片描述

2、只读取文件前面几行

(1)、如读取文件前 888 行,代码如下:

在这里插入图片描述
(2)、运行的结果如下,只显示前888行:

在这里插入图片描述

3、只读取文件后面几行

(1)、读取文件后8行,mainwindow.cpp代码如下:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QFileDialog> //用于弹出文件对话框,供选择文件
#include<QFile> //用于读取文件内容
#include<QDebug>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
   
   
    ui->setupUi(this);

    //点击选取文件按钮,打开文件对话框
    connect(ui->btnPath,&QPushButton::clicked,this,[=]{
   
   
       QString filePath = QFileDialog::getOpenFileName(this,"打开文件","D:\\Temp");
       //将文件的绝对路径放到 lineEdit
       ui->lineEdit->setText(filePath);

       //将文件的内容读取出来,显示到 TextEdit 上
       QFile file(filePath);//该对象用来计算总的行数
       QFile file2(filePath)<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值