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

【Qt】文件系统

文章目录

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

文件系统

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.lryc.cn/news/209544.html

相关文章:

  • PostgreSQL 基础知识
  • 基于 ResNet18 架构使用 deformable convolution的车道线检测
  • C++in/out输入输出流[IO流]
  • MongoDB的安装
  • SQL查询优化---如何查询截取分析
  • vue3基础流程
  • Vue 数据绑定 和 数据渲染
  • 【原创】解决Kotlin无法使用@Slf4j注解的问题
  • CDN是如何实现全球节点同步的
  • Centos7 Linux系统下生成https的crt和key证书
  • 性能测试工具——Jmeter的安装【超详细】
  • 系列三十、Spring AOP vs AspectJ AOP
  • 面向对象设计模式——策略模式
  • Kubernetes - Ingress HTTP 负载搭建部署解决方案(新版本v1.21+)
  • 刚刚:腾讯云3年轻量2核2G4M服务器优惠价格366元三年
  • `include指令【FPGA】
  • iphone备份后怎么转到新手机,iphone备份在哪里查看
  • JAVA毕业设计106—基于Java+Springboot的外卖系统(源码+数据库)
  • SpringCore完整学习教程4,入门级别
  • 如何能在项目具体编码实现之前能尽可能早的发现问题并解决问题
  • Windows server服务器允许多用户远程的设置
  • Vmware下的虚拟机NAT连接后仍然木有网络
  • 2.Vue — 模板语法、数据绑定、el与data的写法、数据代理
  • 管理类联考——数学——汇总篇——知识点突破——数据分析——记忆
  • springboot+mybatis-plus实现读写分离
  • java将list转为逗号隔开字符串,将逗号连接的字符串转成字符数组,​将逗号分隔的字符串转换为List​(Java逗号分隔-字符串与数组相互转换)
  • 2023高频前端面试题-CSS
  • 我会在以下情况用到GPT
  • 33:深入浅出x86中断机制
  • docker docker-compose安装(centos7)