当前位置: 首页 > web >正文

[ Qt ] | 与系统相关的操作(三):QFile介绍和使用

目录

之前的操作文件的方式

Qt中的文件操作简介

QFile

打开

关闭

一个例子来说明

QFileInfo


之前的操作文件的方式

C语言中,fopen 打开文件,fread fwrite 读写文件,fclose 关闭文件。

C++中,fstream 打开文件,<< >> 读写文件,close 关闭文件。

Linux中,open 打开文件,read write 读写文件,close 关闭文件。

Qt中也提供了一套文件操作,开发中也可以使用C语言,C++中的文件操作的方式。

Qt中的文件操作简介

Qt中提供了QFile类,其中包含成员函数用于打开,读,写,关闭文件。

QFile类继承自QFileDevice,QFileDevice继承自QIODevice。

QTemporaryFile,创建一个临时文件,这个对象销毁,这个临时文件就被删除了。

QSaveFile用于写入大量的数据的场景:我们在写文件的时候,往往是清空旧文件内容,再写,假如说写的过程中出错了,那么旧的文件就没了,新的文件还用不了。所以我们写一个文件的时候,会自动把文件写到一个临时文件中(不破坏原来的文件),当全部写完的时候,用新文件替换旧文件。

QFile

打开

open,有几个常见的版本,可以在Qt的帮助文档中查看

如果使用上面的这两个,就要配合C语言的方式或者系统文件描述符的方式,不是很常用

这个更加常用一点,在构造函数中,指定了路径之后,此时可以直接通过这个版本的open打开即可。

打开方式:

read / readLine / readAll

这里的QByteArray是一个字节数组,可以很容易转化成QString。

write

关闭

close

这里的关闭本质就是释放文件描述符表中的表项

一个例子来说明

1. 通过代码的方式来构建界面

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);// 获取菜单栏QMenuBar* menubar = this->menuBar();// 添加菜单QMenu* menu = new QMenu("文件");menubar->addMenu(menu);// 添加菜单项QAction* action1 = new QAction("打开");QAction* action2 = new QAction("保存");menu->addAction(action1);menu->addAction(action2);// 指定一个输入框edit = new QPlainTextEdit();// 设置字体大小QFont font;font.setPixelSize(20);edit->setFont(font);this->setCentralWidget(edit);// 连接Action的信号槽connect(action1, &QAction::triggered, this, &MainWindow::action1Handle);connect(action2, &QAction::triggered, this, &MainWindow::action2Handle);
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::action1Handle()
{// 弹出一个“打开文件”的对话框,让用户选择打开那个文件QString path = QFileDialog::getOpenFileName(this);// 把文件名显示到状态栏里QStatusBar* statusBar = this->statusBar();statusBar->showMessage(path);// 根据用户选择的文件去构造一个QFile对象QFile file(path);bool ret = file.open(QIODevice::ReadOnly);if (!ret){statusBar->showMessage(path + " 打开失败!");return;}QString text = file.readAll();file.close();edit->setPlainText(text);
}void MainWindow::action2Handle()
{// 弹出保存文件的对话框QString path = QFileDialog::getSaveFileName(this);// 在状态栏中显示文件名QStatusBar* statusBar = this->statusBar();statusBar->showMessage(path);// 根据用户选择的文件去构造一个QFile对象QFile file(path);bool ret = file.open(QIODevice::WriteOnly);if (!ret){statusBar->showMessage(path + " 打开失败!");return;}// 写文件const QString& text = edit->toPlainText();file.write(text.toUtf8()); //toUtf8()可以将QString转换为QByteArray// 关闭文件file.close();
}

QFileInfo

获取Qt的文件的相关属性,比如说文件的后缀是什么?文件是普通文件还是目录。

对着QFileInfo按F1,可以查看里面提供的所有功能。

http://www.xdnf.cn/news/12218.html

相关文章:

  • 零碳园区:多维构建绿色标杆,开启美丽中国新纪元
  • 抑郁症患者数据分析
  • Redis大量key集中过期怎么办
  • 环境变量深度解析:从配置到内核的全链路指南
  • DAY 22 Kaggle 比赛
  • 简化复杂系统的优雅之道:深入解析 Java 外观模式
  • 无人机军用与民用技术对比分析
  • C++自定义简单的内存池
  • 数据分析实战2(Tableau)
  • 极昆仑HybridRAG方案:突破原生 RAG 瓶颈,开启大模型应用新境界
  • 企业管理中,商业智能BI主要做哪些事情?
  • 优化学习笔记
  • 网络安全面试题目(无答案)
  • OrCAD X Capture CIS设计小诀窍系列第二季--03.如何在Capture中输出带有目录和元器件信息的PDF
  • 数数科技正式加入上海市人工智能协会,共筑DATA×AI新基建
  • 全球IP归属地查询接口如何用C#进行调用?
  • Dify应用类型和工作流介绍
  • Postgresql源码(146)二进制文件格式分析
  • 贪心,回溯,动态规划
  • 打通印染车间“神经末梢”:DeviceNet转Ethernet/IP连接机器人的高效方案
  • 03 Deep learning神经网络的编程基础 代价函数(Cost function)--吴恩达
  • Mysql锁及其分类
  • Neko虚拟浏览器远程协作方案:Docker+内网穿透技术部署实践
  • 使用ZYNQ芯片和LVGL框架实现用户高刷新UI设计系列教程(第十五讲)
  • WebRTC中的几个Rtp*Sender
  • 解锁FastAPI与MongoDB聚合管道的性能奥秘
  • 【2025年】解决Burpsuite抓不到https包的问题
  • python爬虫:grequests的详细使用(基于gevent和requests的异步HTTP请求库)
  • 「数据分析 - Pandas 函数」【数据分析全栈攻略:爬虫+处理+可视化+报告】
  • 使用 HTML +JavaScript 从零构建视频帧提取器