Qt03文件读写
发表于更新于
字数总计:1.7k阅读时长:6分钟阅读量: 济宁
QtQt学习Qt03文件读写
wypQt 提供了两种读写纯文本文件的基本方法:
- 用 QFile 类的 IODevice 读写功能直接进行读写
- 利用 QFile 和 QTextStream 结合起来,用流(Stream)的方法进行文件读写。
一、文件读操作
(1)使用QFile类
Qt封装了QFile类,方便我们对文件进行操作,可以按照如下的步骤进行:
- 使用QFile加载文件对象
- 打开文件 file.open(打开方式)
- 操作文件
- 关闭文件 file.close()
实例:点击读写文件按钮,读取文件内容到textEdit中
1️⃣设置 ui 界面

2️⃣在widget.cpp中编辑代码(QFileDialog类是打开文件)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| connect(ui->pushButton,&QPushButton::clicked,[=](){ QString path = QFileDialog::getOpenFileName(this,"打开文件","C:/Users/WFD/Desktop");
ui->lineEdit->setText(path);
QFile file(path); file.open(QIODevice::ReadOnly); QByteArray array=file.readAll(); ui->textEdit->setText(array); file.close(); });
|

注意:在设置打开方式的时候
QFile::open() 函数打开文件时需要传递 QIODevice::OpenModeFlag
枚举类型的参数,决定文件以什么方式打开,QIODevice::OpenModeFlag 类型的主要取值如下:
1 2 3 4 5 6 7 8
| QIODevice::ReadOnly QIODevice::WriteOnly QIODevice::ReadWrite QIODevice::Append QIODevice::Truncate QIODevice::Text
这些取值可以组合,例如 QIODevice::ReadOnly | QIODevice::Text 表示以只读和文本方式打开文件。
|
注意:在操作文件时
用只读方式打开一个文本文件,然后用readAll()方法将文件内容一次全部读取出来,返回值是字节数组QByteArray。QByteArray用来存放二进制数据,如果想要看文字内容需要转换成QString。(有时候系统会自动转换)
我们也可以使用readLine方法一次读取一行,然后每次对一行文字进行操作:(用file.atEnd判断是否读到最后一行)
1 2 3 4 5
| QByteArray array; while(!file.atEnd()) { array+=file.readLine(); }
|
(2)使用QTextStream类
如果操作的是文本文件,Qt还专门封装了一个处理文本流的类,我们可以用它来读取文本内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| connect(ui->pushButton,&QPushButton::clicked,[=](){ QString path= QFileDialog::getOpenFileName(this,"打开文件","C:/Users/WFD/Desktop"); ui->lineEdit->setText(path); QFile file(path); file.open(QIODevice::ReadOnly); QTextStream QS(&file); QString array=QS.readAll(); ui->textEdit->setText(array); file.close();
|
二、文件写操作
(1)使用QFile类
使用QFile同样可以对文件进行写操作:

2)使用QTextStream类
QTextStream类对操作符进行了重载,我们可以通过 << 操作符将字符串流入文本文件:

三、文件信息读取
除了对文件的读写操作,Qt还封装了QFileInfo类帮助我们获取文件的元数据,比如文件大小、后缀名、创建时间、最后修改时间等等:

拓展:
1 2 3 4 5
| QString -> QByteArray QString.toUtf8();
QByteArray -> std::string QByteArray.toStdString();
std::string -> char * string.date();
|
1 2 3
| QFileDialog::getOpenFileName() QFileDialog::getExistingDirectory() QFileDialog::getSaveFileName()
|
QT配置ini文件的建立,读取,写入操作
1 ini文件介绍
.ini 文件是Initialization File的缩写,即初始化文件。
除了windows现在很多其他操作系统下面的应用软件也有.ini文件,用来配置应用软件以实现不同用户的要求。一般不用直接编辑这些.ini文件,应用程序的图形界面即可操作以实现相同的功能。它可以用来存放软件信息,注册表信息等。
2 ini文件格式
INI文件由节、键、值组成。
1 2 3 4 5 6 7
| 节
[section]
参数(键=值)
name=value
|
下面是一个ini文件的例子
1 2 3 4 5 6 7 8 9 10 11 12 13
| [Section1 Name]
KeyName1=value1
KeyName2=value2
...
[Section2 Name]
KeyName21=value21
KeyName22=value22
|
其中:[Section1 Name]用来表示一个段落。因为INI文件可能是项目中共用的,所以使用[Section Name]段名来区分不同用途的参数区。例如:[Section1 Name]表示传感器灵敏度参数区;[Section2 Name]表示测量通道参数区等等。
注解:使用分号表示(;)。在分号后面的文字,直到该行结尾都全部为注解。
3 Qt写ini文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| #include <QApplication> #include <QSettings> int main(int argc, char *argv[]) { QApplication a(argc, argv); QSettings *configIniWrite = new QSettings("hahaya.ini", QSettings::IniFormat); configIniWrite->setValue("/ip/first", "192.168.0.1"); configIniWrite->setValue("ip/second", "127.0.0.1"); configIniWrite->setValue("port/open", "2222"); delete configIniWrite; return a.exec(); }
|
运行程序后,打开程序目录下的hahaya.ini文件,结果如下图所示:

4 Qt读ini文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| #include <QApplication> #include <QSettings> #include<QDebug> int main(int argc, char *argv[]) { QApplication a(argc, argv); QSettings *configIniRead = new QSettings("hahaya.ini", QSettings::IniFormat); QString ipResult = configIniRead->value("/ip/second").toString(); QString portResult = configIniRead->value("/port/open").toString(); qDebug() << ipResult; qDebug() << portResult; delete configIniRead; return a.exec(); }
|

转载自:唯有自己强大 如有侵权,在下方评论 立刻删除。