【Qt】文件系统

news/2024/7/24 8:39:21 标签: 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.niftyadmin.cn/n/5132400.html

相关文章

敏感词过滤--golang

目录 1. 建立敏感词数据库表2. 定时任务&#xff0c;读数据并建立敏感词树2.1 开启定时任务2.2 读数据并建立敏感词树 3. 使用 思路&#xff1a; 将敏感词都存到数据库表中定时读取数据到内存中&#xff0c;构建敏感词前缀树写工具方法&#xff0c;使用内存中的前缀树判断消息…

飞利浦双串口51单片机485网关

主要功能将PC端的数据接收下来&#xff0c;分发到不同的设备&#xff0c;也是轮询设备数据读取回来&#xff0c;打包回传到PC端&#xff0c;数据包包头包尾识别&#xff0c;数据校验&#xff0c;接收超时处理&#xff0c;将协议结构化处理&#xff0c;协议的改动不需要改动程序…

【通信原理】第二章|确知信号

前言 那么这里博主先安利一些干货满满的专栏了&#xff01; 首先是博主的高质量博客的汇总&#xff0c;这个专栏里面的博客&#xff0c;都是博主最最用心写的一部分&#xff0c;干货满满&#xff0c;希望对大家有帮助。 高质量博客汇总 文章目录 前言 第二章 确知信号1. 确知…

Go学习第十六章——Gin文件上传与下载

Go web框架——Gin文件上传与下载 1. 文件上传1.1 入门案例&#xff08;单文件&#xff09;1.2 服务端保存文件的几种方式SaveUploadedFileCreateCopy 1.3 读取上传的文件1.4 多文件上传 2. 文件下载2.1 快速入门2.2 前后端模式下的文件下载2.3 中文乱码问题 1. 文件上传 1.1 …

antdb-AntDB快速入门——快速部署

快速部署 单机版安装 安装RPM包 将交付人员提供的RPM包上传到服务器上&#xff0c;然后在root或者具有sudo权限的用户下安装。 安装到默认路径/opt/app/antdb&#xff1a; sudo rpm -ivh antdb-xxx.rpm 如果想安装到其他路径&#xff0c;可以通过如下方式&#xff1a; su…

c++和java实现策略模式的差异

一、C和java的差异 实例化方式 c的对象有两种实例化方式&#xff0c;一种是局部变量中直接实例化。一种是new出来的。 MyClass myclass; //第一种方式 MyClass* myclassPtrnew MyClass(); //第二种方式java的对象构建&#xff0c;没有第一种方式&#xff0c;java的对象都…

掌握Python:开启未来的大门

Python&#xff0c;一门以其简洁性和多才多艺而著称的编程语言&#xff0c;正成为未来的关键技能之一。随着数字时代的到来&#xff0c;Python的发展前景愈发广泛&#xff0c;而且其易学性吸引着越来越多的学习者。 1.Python的发展前景&#xff1a; Python在数据科学、人工智能…

女生面试3轮问工资到手1900被气笑

10月26日&#xff0c;四川成都。女子两个多小时面试三轮一问工资1900元。 当事人曾女士称&#xff0c;招聘信息写的4000-5000元&#xff0c;想着大公司福利好且有餐补&#xff0c;觉得挺合适就去面试了。 前台先让填表格面试第一轮&#xff0c;自己问薪资问题&#xff0c;她说…