【Qt】文件系统

news2024/12/23 23:48:58

文章目录

  • 文件系统
  • 文件操作
  • 案例:显示路径到标题框,显示内容到文本框
    • 对文件进行写操作
    • 获取文件相关信息

文件系统

Qt 通过QIODevice提供了对 I/O 设备的抽象,这些设备具有读写字节块的能力,下面是 I/O 设备的类图:

image-20231005152245943

  • QIODevice:所有 I/O 设备类的父类,提供了字节块读写的通用操作以及基本接口
  • QFileDevice:Qt5新增加的类,提供了有关文件操作的通用实现
  • QFlie:访问本地文件或者嵌入资源;
  • QTemporaryFile:创建和访问本地文件系统的临时文件;
  • QBuffer:读写QbyteArray, 内存文件;
  • QProcess:运行外部程序,处理进程间通讯;
  • QAbstractSocket:所有套接字类的父类;
  • QTcpSocket:TCP协议网络数据传输;
  • QUdpSocket:传输 UDP 报文;
  • QSslSocket:使用 SSL/TLS 传输数据;

文件操作

QFile提供了从文件中读取和写入数据的能力,通常会将文件路径作为参数传给QFile的构造函数,也可以在创建好对象最后,使用setFileName()来修改。可以使用QDataStream或QTextStream类来读写文件,也可以使用QIODevice类提供的read()、readLine()、readAll()以及write()这样的函数

注意:有关文件本身的信息,比如文件名、文件所在目录的名字等,则是通过QFileInfo获取


案例:显示路径到标题框,显示内容到文本框

image-20231005153359649

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    //点击选取文件按钮 弹出文件对话框
    connect(ui->pushButton,&QPushButton::clicked,[=](){
        //弹出文件对话框 第一个参数:父类指针 第二个参数:对话框标题 第三个参数:默认路径
        QString file_path =QFileDialog::getOpenFileName(this,"打开文件","Z:");
        //将选取的文件路径放入到lineEdit中 =>放到文本框当中
        ui->lineEdit->setText(file_path);
        //将文件的内容读取到textEdit当中
        QFile file(file_path); //参数:需要文件的路径
        file.open(QIODevice::ReadOnly);//指定打开方式

        //方法1:一次读取所有的内容
        //QByteArray array = file.readAll();
        //ui->textEdit->setText(array);//将读取到的数据 放入textEdit中

        //方法2:按行读取
        QByteArray array;
        while( !file.atEnd())
        {
            array += file.readLine(); //按行读  追加到array
        }
        ui->textEdit->setText(array);//将读取到的数据 放入textEdit中

        //关闭文件对象
        file.close();
    });
}

对文件进行写操作

file.open(QIODevice::Append); //用追加方式进行写
file.write("啊啊啊啊啊");
file.close();

获取文件相关信息

//QFileInfo 文件信息类
QFileInfo info(file_path);
//size返回的是字节数
qDebug() << "大小:" << info.size() << " 后缀名:" << info.suffix() << " 文件名称:"<<info.fileName() << " 文件路径:"<< info.filePath();
qDebug() << "创建日期:" << info.created().toString("yyyy/MM/dd hh:mm:ss");
qDebug() << "最后修改日期:"<<info.lastModified().toString("yyyy-MM-dd hh:mm:ss");

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1139327.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Proteus仿真】【STM32单片机】智能助眠机系统设计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真STM32单片机控制器&#xff0c;使用蜂鸣器闹铃模块、LCD1602显示模块、心率血氧模块、PCF8691 ADC模块、按键模块等。 主要功能&#xff1a; 系统运行后&#xff0c;LCD1602显示传…

【开源】基于SpringBoot的高校学院网站的设计和实现

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 学院院系模块2.2 竞赛报名模块2.3 教育教学模块2.4 招生就业模块2.5 实时信息模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 学院院系表3.2.2 竞赛报名表3.2.3 教育教学表3.2.4 招生就业表3.2.5 实时信息表 四、系…

校园门禁升级改造,终于看到了希望!

随着社会的不断发展和技术的日益进步&#xff0c;安全和访问控制成为了各种场所和组织的首要关切。门禁监控系统作为一种融合了物理安全与电子监控的创新解决方案&#xff0c;已经成为了现代社会不可或缺的一部分。 客户案例 企业办公楼 福州某企业办公楼公司采用了泛地缘科技…

【开源】基于SpringBoot的农村物流配送系统的设计和实现

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 系统登录、注册界面2.2 系统功能2.2.1 快递信息管理&#xff1a;2.2.2 位置信息管理&#xff1a;2.2.3 配送人员分配&#xff1a;2.2.4 路线规划&#xff1a;2.2.5 个人中心&#xff1a;2.2.6 退换快递处理&#xff1a;…

Spring源码-3.Bean的后置处理器

Bean后置处理器与注解的关系 首先以一个没有添加额外的后置处理器来说明&#xff1a;️GenericApplicationContext GenericApplicationContext context new GenericApplicationContext();public class Bean1 {private static final Logger log LoggerFactory.getLogger(Bea…

工作流审批平台,可迁移,可快速开发审批单(源码)

前言 activiti工作流引擎项目&#xff0c;企业erp、oa、hr、crm等企事业办公系统轻松落地&#xff0c;请假审批demo从流程绘制到审批结束实例。 一、项目形式 springbootvueactiviti集成了activiti在线编辑器&#xff0c;流行的前后端分离部署开发模式&#xff0c;快速开发平…

vscode C++项目相对路径的问题

如图所示的项目目录结构 如果要在main.cpp里用相对路径保存一个txt文件 std::ofstream file("./tree_model/my_file.txt");if (file.is_open()) {file << "This is a sample text.\n";file.close();std::cout << "File saved in the mode…

stm32 Keil V5 开发pack突然丢失

1.好好的工程,前一天可以正常编译,第二天突然无法编译,显示缺少安装包文件,如是重新下载安装包进入导入。 2.显示丢失 1.做STM32开发时,经常发现下载的DEMO代码无法打开,ST自带的更新库软件根本连不上服务器,每次到此都非常恼火。 3. CMSIS变成可红色 2. 莫名其妙的丢…

通过servlet设计一个博客系统

博客系统 准备工作servlrt依赖mysql依赖jackson依赖 服务器和数据库的交互设计数据库/数据表封装DBUtil,实现建立连接和断开连接创建实体类bloguser 编写Dao类BlogDaoUserDao 前端和服务器的交互功能一:博客列表页约定格式后端代码前端代码 功能二:实现博客详情页约定格式后端代…

NCP1256ESN65T1G具有多种保护功能 一款低功率离线电流模式PWM控制器

NCP1256ESN65T1G 包括构建几瓦到几十瓦成本高效开关模式电源所需的一切功能。该零件采用微型 TSOP-6 封装&#xff0c;供电范围高达 30 V&#xff0c;具有带抖动的 65 kHz 或 100 kHz 开关电路&#xff0c;在峰值电流模式控制下运行。当辅助侧功率开始降低时&#xff0c;该控制…

ARP欺骗攻击

ARP协议的概念 地址解析协议&#xff0c;即ARP&#xff08;Address Resolution Protocol&#xff09;&#xff0c;是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机&#xff0c;并接收返回消息&#xff0c;以此…

邂逅React及React初体验

文章目录 一、React是什么二、React数据对比三、React特点3.1 技术特点3.2 声明式编程3.3 组件化开发3.4 多平台适配 四、React开发依赖4.1 React的开发依赖4.2 Babel和React的关系4.3 React的依赖引入 五、React初体验5.1 Hello World5.2 增加按钮&#xff0c;点击修改文本5.3…

多元数据库时代,如何选择数据库基础设施?

一 多元数据库时代趋势特点 在数据库技术发展、数字化转型应用和信创三大驱动力共同作用下&#xff0c;数据库从单一架构支持多类应用演变为多类架构支持多类应用。这些架构并非替代关系&#xff0c;而是相互共存、共同发展的关系&#xff0c;数据库的多样性成为必然&#xff0…

Oculus开发入门

老是访问官网搭建unity环境太麻烦了&#xff0c;自己记录一下&#xff0c;在国内看。 官网教程连接 Getting Started with Interaction SDK | Oculus Developers Adjust Camera Rig Once you’ve completed the tutorial listed above, you can find Interaction SDK in Unit…

媒介易发稿教程,在人民网投稿的指南与技巧

在当今信息快速传播的时代&#xff0c;网络媒体成为了人们获取信息、表达观点的重要平台。而在这个庞大信息海洋中&#xff0c;人民网作为中国最具影响力的新闻网站之一&#xff0c;扮演着引领舆论、传播价值观念的重要角色。无论是个人经历、社会观察&#xff0c;还是学术研究…

日本汽车弯道超车,意图反超中国汽车和特斯拉,中国汽车另辟蹊径

日本汽车领军者丰田再次宣称固态电池是商用正在加速&#xff0c;已在电池材料技术上取得突破&#xff0c;充电10分钟可行驶1200公里&#xff0c;将在2027年装载于雷克萨斯上&#xff0c;再次引领汽车行业变革&#xff0c;为它在新能源汽车行业的落后鼓气。 丰田与大众可谓汽车行…

使用 IBM HeapAnalyzer 分析堆转储快照文件的

1.打开IBM HeapAnalyzer工具所在文件夹&#xff0c;执行cmd进入命令窗口 java -jar -Xmx1G .\ha456.jarha456.jar 为IBM HeapAnalyzer工具文件名 2、打开需要分析的日志文件

测试人员的设计思维

我们在工作、生活中经常听到别人说设计思维。那么&#xff0c;设计思维是什么&#xff1f;对测试人员来说有什么帮助&#xff1f; 在聊设计思维前&#xff0c;让我们先了解一下思维。思维是人类的重要组成部分&#xff0c;它帮助我们理解复杂的情况&#xff0c;形成深思熟虑的…

Class文件简单解析

一、Class文件 Test.java public class Test{ private int count; public int inc(){ return count;} } vim -b Test.class 输入 :%!xxd 图一 java反编译 javap -v -l -c Test.class 图二 二、Class文件解析 1、Class文件结构 1、魔数 魔数magic是Class文件的标记&…