07-QT文件操作

一. 文件的读取和写入:QByteArray

点击读取和写入按钮,弹出对话框,进行读取和写入操作。单行文本框打印文件路径,多行文本框读取文件时显示文件内容。

    connect(ui->pushButton, &QPushButton::clicked, [=](){
       QString path = QFileDialog::getOpenFileName(this,
            "读取文件", "C:\\Users\\lenovo\\Desktop");
       //选择文件后的显示功能
       ui->lineEdit->setText(path);
       QFile file(path); //创建文件对象
       file.open(QIODevice::ReadOnly); //以只读的方式打开文件
       QByteArray byteArray; //字节数组,即char *
       while (!file.atEnd()) {
           byteArray += file.readLine();
       }
       //byteArray = file.readAll(); //读取全部文件内容
       ui->textEdit->setText(byteArray); //设置到Edit中
    });

    connect(ui->pushButton_2, &QPushButton::clicked, [=](){
       QString path = QFileDialog::getOpenFileName(this,
            "写入文件", "C:\\Users\\lenovo\\Desktop");
       //选择文件后的显示功能(同上)
       ui->lineEdit->setText(path);
       //追加功能
       QFile *file = new QFile(path);
       file->open(QIODevice::Append); //在文件末尾追加
       file->write("\r\n 同学们好"); //只接受char *类型,所以不能用QString
       file->close(); //关闭文件时才会写入文件
       
    });

07-QT文件操作_第1张图片

二. 文本流:QTextStream

所有东西都以文本的形式写入。如果想写入数值,可以定义一个int变量,然后使用重载左移进行写入。如果想要原样写入,那么就要使用二进制文件流。

    connect(ui->pushButton, &QPushButton::clicked, [=](){
        QString path = QFileDialog::getOpenFileName(this,
                                                    "读取文件", "C:\\Users\\lenovo\\Desktop");
        //选择文件后的显示功能
        ui->lineEdit->setText(path);
        QFile file(path); //创建文件对象
        file.open(QIODevice::ReadOnly);
        QTextStream textString(&file); //创建文本文件流
        ui->textEdit->setText(textString.readAll());

    });

    connect(ui->pushButton_2, &QPushButton::clicked, [=](){
        QString path = QFileDialog::getOpenFileName(this,
            "写入文件", "C:\\Users\\lenovo\\Desktop");
        ui->lineEdit->setText(path);
        QFile *file = new QFile(path);
        file->open(QIODevice::Append);

        QTextStream textStream(file);
        QString str1 = "\r\n同学们好";
        textStream.setCodec("utf-8"); //设置写入编码格式
        textStream << str1;
        file->close();
    });

三. 二进制文件流:QDataString

数据写入后可以原样读取,它是以二进制的方式写入文本的。需要注意读出的顺序要与写入顺序一致。

    connect(ui->pushButton, &QPushButton::clicked, [=](){
        QString path = QFileDialog::getOpenFileName(this,
            "读取文件", "C:\\Users\\lenovo\\Desktop");
        //选择文件后的显示功能
        ui->lineEdit->setText(path);
        QFile file(path); //创建文件对象
        file.open(QIODevice::ReadOnly);

        QString str1, str2;
        int a;

        QDataStream dataStream(&file);
        dataStream >> str1;
        dataStream >> str2;
        dataStream >> a;

        qDebug() << str1;
        qDebug() << str2;
        qDebug() << a;

    });

    connect(ui->pushButton_2, &QPushButton::clicked, [=](){
        QString path = QFileDialog::getOpenFileName(this,
            "写入文件", "C:\\Users\\lenovo\\Desktop");
        ui->lineEdit->setText(path);
        QFile *file = new QFile(path);
        file->open(QIODevice::Append);

        QDataStream dataStream(file);
        QString str1, str2;
        str1 = "同学们好";
        str2 = "老师好";
        int a = 12345;

        dataStream << str1;
        dataStream << str2;
        dataStream << a;

        file->close();
    });

四. 文件信息:QFileInfo

        //创建文件信息对象
        QFileInfo fileInfo(path);
        qDebug() << "文件名称" << fileInfo.fileName();
        qDebug() << "文件大小" << fileInfo.size();
        qDebug() << "文件类型" << fileInfo.suffix();
        qDebug() << "创建时间" << fileInfo.created();
        qDebug() << "是否可写" << fileInfo.isWritable();

 

你可能感兴趣的:(QT)