• 【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();
        });
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31

    对文件进行写操作

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

    获取文件相关信息

    //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");
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
  • 相关阅读:
    神器必会!特别好使的编辑器Source Insight
    被妖魔化的奥数,到底该怎么学?
    SALOME源码分析:GUI模块
    JS-对象
    【Leetcode】1030. Matrix Cells in Distance Order
    微服务之网关
    xml导出pdf简单实现
    WebSocket技术解析:实现Web实时双向通信的利器
    7天入门python系列之爬取热门小说项目实战,互联网的东西怎么算白嫖呢
    docker部署Prometheus+Cadvisor+Grafana实现服务器监控
  • 原文地址:https://blog.csdn.net/chuxinchangcun/article/details/134070107