Qt文件操作

QFile 类用于文件操作,它提供了读写文件的接口,可以读写文件、二进制件和 Qt 资源文件。
处理文本文件和二进制文件,可以使用 QTextStream 类和 QDataStream 类,处理临时文件可以使用 QTemporaryFile,获取信息可以使用 QFileInfo,处理目录可以使用 QDir,监视文件和目录变化可以使用 QFileSystemWatcher。

1、QTextStream的操作符

在这里插入图片描述

2、读写

 QFile file("hello.txt");
    //读文件
    if( file.open(QIODevice::ReadOnly) ){
        char buff[100];
        qint32 m;

        m = file.readLine(buff,sizeof(buff));
        if( m!= -1){
            qDebug() << "长度" <<m
                     << "内容" <<buff
                     <<endl;
            file.close();
        }
    }else{
        qDebug() << file.errorString();
    }

    double db = 3.1415926;
    int age = 10;
    QFile datafile;
    datafile.setFileName("hello.txt");
    //写文件
    if( datafile.open(QFile::WriteOnly | QFile::Truncate) ){
        QTextStream out(&datafile);
        out.setRealNumberPrecision(8);//控制精度
        out.setFieldWidth(10);//字段宽度
        out.setFieldAlignment(QTextStream::AlignLeft);//对齐方式
        out<<QString("PI:")
          <<db
         <<hex //进制转化
        <<age;
    }

3、二进制读写

#include <QCoreApplication>
#include<QFile>
#include<QDate>
#include<QDebug>
#include<QDataStream>
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    //二进制写
    QFile binfile("infi.bat");
    if( binfile.open(QIODevice::WriteOnly|QIODevice::Truncate) ){
        QDataStream out(&binfile);
        out << QString("梅川酷子")
            <<QDate::fromString("2023-02-26","yyyy-MM-dd")
           <<(qint32)23;
        binfile.close();
    }else{
        binfile.errorString();
    }

    //读
    binfile.setFileName("infi.bat");
    if( binfile.open(QIODevice::ReadOnly) ){
        QDataStream in(&binfile);
        //按写入格式读
        QString name;
        QDate birthday;
        qint32 age;
        in >> name >> birthday >> age;
        qDebug() << name << birthday << age;
        binfile.close();
    }

    return a.exec();
}

4、QFileInfo

void fileInfo::getFileInfo(QString &fileName)
{
    QFileInfo info(fileName);

    ui->fileSizeLineEdit->setText(QString::number(info.size()));//文件大小,int类型转化为QString
    ui->createLineEdit->setText(info.created().toString());//创建时间,返回类型为QDateTime转化为QString类型
    ui->alterLineEdit->setText(info.lastModified().toString());//最后修改时间
    ui->visitLineEdit->setText(info.lastRead().toString());//最后访问时间

    ui->DiacheckBox->setChecked(info.isDir());//是否为目录
    ui->filecheckBox->setChecked(info.isFile());//文件
    ui->linkcheckBox->setChecked(info.isSymLink());//符号链接
    ui->concelcheckBox->setChecked(info.isHidden());//隐藏文件
    ui->readcheckBox->setChecked(info.isReadable());//读
    ui->writecheckBox->setChecked(info.isWritable());//写
    ui->executecheckBox->setChecked(info.isExecutable());//执行

}

void fileInfo::on_browstBtn_clicked()
{
    QString filename = QFileDialog::getOpenFileName(this,"打开文件",".","files(*)");
    ui->fileNameLineEdit->setText(filename);
    getFileInfo(filename);

}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值