1. Qt文件系统简介 - QFile

文件系统是应用程序必不可少的部分。Qt作为一个通用开发库,提供了跨平台的文件操作能力。Qt通过 QIODevice 提供了对I/O设备的抽象,使这些设备具有读写字节块的能力。

在所有的I/O设备中,文件I/O是最重要的部分之一。QFile提供了从文件中读取和写入数据的能力。我们通常会将文件路径作为参数传给QFile的构造函数。不过也可以在创建好对象后,使用 setFileName()来修改。

QFile 主要提供了有关文件的各种操作,比如打开文件、关闭文件、刷新文件等。我们可以使用 QDataStream或 QTextStream类来读写文件,也可以使用 QIODevice类提供的 read()、readLine()、readAll()以及 write()这样的函数。值得注意的是,有关文件本身的信息,比如文件名、文件所在目录的名字等,则是通过 QFileInfo获取,而不是自己分析文件路径字符串。

GitHub源码仓库:Qt学习例程

2. 示例需求及流程

  • 需求:新建QWidget工程,创建这样一个界面工程。选择文件后,会将文件路径显示到 lineEdit里,并且将文档内容显示在 textEdit中。

例程功能执行过程

按键关联消息槽,弹出文件对话框,打开文件,输出路径。

读内容有两种方式:(默认utf-8,可以指定格式gbk,不过很麻烦。)

  • file.readAll();,全部读取

  • file.readLine();,按行读,读到文件行尾。

打开后,别忘记关闭文件对象。

写文件。

按照指定的日期时间格式,输出文件创建日期 和最后修改日期。

打开文件的方式:

日期时间的格式编码方法:

3. 示例源码、现象

GitHub源码仓库:Qt学习例程

#include "widget.h"
#include "ui_widget.h"
#include <QFileDialog>
#include <QDebug>
#include <QTextCodec>
#include <QDateTime>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);// 点击选取文件按钮,弹出文件对话框connect(ui->pushButton, &QPushButton::clicked, [=](){// 用打开的方式打开一个文件对话框// 打印选中该的路径名称。参数:父对象,对话框标题,默认打开路径,过滤的文件格式QString path = QFileDialog::getOpenFileName(this, "open","../","Text(*.txt);;souce(*.cpp *.h);;all(*.*)");// 调试输出选择路径qDebug() << path;// 将路径显示到 lineEditui->lineEdit->setText(path);// 指定操作文件格式,只能指定一种格式,所以指定gbk时读utf-8的会出错//QTextCodec * codec = QTextCodec::codecForName("gbk");// 读取txt内容,放入到 textEdit中// QFile默认支持的格式是 utf-8// 输入打开文件的文件路径QFile file(path);// 打开方式:只读/只写/读写/追加file.open(QIODevice::ReadOnly);// 全部读取//QByteArray array = file.readAll();// 按行读,追加到array,直到读到行尾QByteArray array;while(!file.atEnd()){array += file.readLine();}ui->textEdit->setText(array);//ui->textEdit->setText(codec->toUnicode(array));// 关闭文件对象file.close();// 用追加方式进行写文件/*file.open(QIODevice::Append);file.write("aaaaaaaaa");// 关闭文件对象file.close();*/// QFileInfo 文件信息类QFileInfo info(path);qDebug() << "大小:" << info.size() << "Bytes 后缀名:" << info.suffix()<< " 文件名称:" << info.fileName() << " 文件路径:" << info.filePath();// 显示 创建日期qDebug() << "创建日期:" << info.created().toString("yyyy/MM/dd hh:mm:ss");qDebug() << "创建日期:" << info.birthTime().toString("yyyy/MM/dd hh:mm:ss");// 显示 最后修改日期qDebug() << "最后修改日期:" << info.metadataChangeTime().toString("yyyy/MM/dd hh:mm:ss");qDebug() << "最后修改日期:" << info.lastModified().toString("yyyy/MM/dd hh:mm:ss");});
}Widget::~Widget()
{delete ui;
}

文件对话框选择目录中的.txt文档,结果如下:

【Qt教程】4.1 - Qt5 文件系统 QFile文件读写操作相关推荐

  1. Qt -- QFile文件读写操作

    对于文件的读写操作,C 和 C++ 都各有一套方式.而在 Qt 中也有一套,即使用 QFile 对文件进行读和写操作. 文件的打开方式 文件路径说明:(windows-release编译) QFile ...

  2. php利用文件做数据储存,PHP_PHP文件读写操作之文件写入代码,在PHP网站开发中,存储数据通 - phpStudy...

    PHP文件读写操作之文件写入代码 在PHP网站开发中,存储数据通常有两种方式,一种以文本文件方式存储,比如txt文件,一种是以数据库方式存储,比如Mysql,相对于数据库存储,文件存储并没有什么优势, ...

  3. Python 文件读写操作-Python零基础入门教程

    目录 一.Python 文件的打开 open 二.Python 文件的关闭 close 三.Python 文件的读取 read 1.read 函数 2.readline 函数 3.readlines ...

  4. php中文件读写总结,PHP中文件读写操作

    PHP中文件读写操作 PHP中提供了一系列的I/O函数,能简捷地实现我们所需要的功能,包括文件系统操作和目录操作(如"复制[copy]").下面给大家介绍的是基本的文件读写操作:( ...

  5. java大文件读写操作

    转载自:http://blog.csdn.net/akon_vm/article/details/7429245 RandomAccessFile RandomAccessFile是用来访问那些保存数 ...

  6. C++ builder 的文件读写操作总结

    C++ builder 的文件读写操作总结 在编程的过程中,文件的操作是一个经常用到的问题,在C++Builder中,可以使用多种方法对文件操作,下面我就按以下几个部分对此作详细介绍,就是: 1.基于 ...

  7. unity webgl读写txt文件_python Files文件读写操作

    今天学习python的Files文件读写操作,并记录学习过程欢迎大家一起交流分享. 首先新建一个文本文件test.txt,内容如下: hello worldhello youhello mehello ...

  8. java文件读写操作类

    借鉴了项目以前的文件写入功能,实现了对文件读写操作的封装 仅仅需要在读写方法传入路径即可(可以是绝对或相对路径) 以后使用时,可以在此基础上改进,比如: 写操作: 1,对java GUI中文本框中的内 ...

  9. OpenCV学习笔记(四):XML,YAML(.txt,.doc)文件读写操作

    OpenCV学习笔记(四):XML,YAML(.txt,.doc)文件读写操作 一.Write_XML_and_YAML_File(写入XML) #include <opencv2/opencv ...

最新文章

  1. 基于现有工程解读stm32的工程文件
  2. 香港理工大学计算机系石杰明老师组招收全奖博士生、博士后
  3. Web前端经典面试试题(二)
  4. 几个关于噪声测量的实验
  5. 52 介绍几个重要的类
  6. IE新0day漏洞(979352)(又称极光零日漏洞)***将扩散
  7. linux mkfs 源码,mkfs工具怎么移植到嵌入式平台下面
  8. 保定linux第一版PPT-SVN for Linux
  9. rtthread 串口dma接收_RT-Thread 串口DMA使用笔记--STM32F207
  10. 551. Student Attendance Record I 从字符串判断学生考勤
  11. 推荐几个阿里、美团、腾讯大佬的公众号,一起学习!
  12. IT项目中的6类知识转移
  13. render在python中的含义_python面试中常见易混淆概念
  14. Netty工作笔记0049---阶段内容梳理
  15. Effective C++ 之 Item 5:了解C++默默编写并调用哪些函数
  16. PHP for windows iis6配置
  17. EnableQ在线问卷调查引擎V3.0发布
  18. 原生微信小程序UI组件库
  19. innodb中的行格式——Compact、Dynamic、Compressed、Redundant详解
  20. WebStorm下载、安装、配置/2022最新版

热门文章

  1. https://127.0.0.1:8080/test?param={%22..报错
  2. java技术秘籍 转摘
  3. rz/sz:工作原理
  4. 【转】Cron表达式简介
  5. C++虚函数及虚函数表解析
  6. pku3670 Eating Together
  7. 数据结构复习之【线性表】
  8. 算法图解学习笔记01之二分查找
  9. 多线程bug处理记录
  10. IT程序员在北京可以选择哪些国企、央企以及研究所?