Qt中自己定义一套对文件的读写操作:QFile
常用的读写模式如下:
QIODevice::ReadOnly:文件以只读的形式打开QIODevice::WriteOnly:文件以写的形式打开,该方式写入的新内容会覆盖掉之前的内容。QIODevice::ReadWrite:文件以读写的方式打开QIODevice::Append:文件以追加的方式打开,新写入的内容会被添加到文件的末尾,原来的内容会被保留QIODevice::Text:将每行的结束字符根据具体的环境转换成对应的形式,一般都附带该项QIODevice::Truncate:以截断的方式来打开文件QIODevice::NotOpen:文件没有被打开
一、创建一个窗口程序来选择某一路径下的文件,读取其所有内容
Qt 默认支持格式为UTF-8,如果读取的文件为GBK或者ANSI格式,则需要特别设置读取文件格式。
1、ui页面的设置布局
- 首先分别添加控件
LineEdit、TextEdit、PushButton、Widget。其中LineEdit和PushButton位于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)<

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

被折叠的 条评论
为什么被折叠?



