Qt文件处理

QFile类用于文件操作,它提供了读写文件的接口,可以读写文件、二进制文件和Qt资源文件。

处理文本文件和二进制文件,可以使用QTextStream类和QDataStream类。处理临时文件可以使用QTemporaryFile,获取信息可以使用QFileInfo,处理目录可以使用QDir,监视文件和目录变化可以使用QFileSystemWatcher。

本文福利,费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QSS,OpenCV,Quick模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击费领取↓↓

 

QFile类示例

#include <QCoreApplication>
#include<QFile>
#include<QDebug>
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    //文件读取
   QFile file("hello.txt");
   if(file.open(QIODevice::ReadOnly))
   {
       char buffer[100];
       qint32 n = file.readLine(buffer,sizeof(buffer));
       if(n != -1)
       {
            qDebug()<<n<<" "<<buffer;
            file.close();//关闭文件
       }
   }
   else
   {
        qDebug()<<file.errorString();
    }

   //文件写入
   QFile dataFile;
   double dPI = 3.1415926;
   int age =19;
   dataFile.setFileName("data.txt");
   if(dataFile.open(QFile::WriteOnly | QFile::Truncate))
   {
        QTextStream out(&dataFile);
        //设置精度
        out.setRealNumberPrecision(3);
        //设置字段宽度
        out.setFieldWidth(20);
         //设置对齐方式
         out.setFieldAlignment(QTextStream::AlignCenter);
        out<<QString("PI:")<<dPI;
        //将整数以二进制方式写入
        out<<bin<<age;
        //十六进制写入,并显示进制前缀
        out<<hex<<showbase<<age;
        //科学计数法
        out<<scientific<<dPI;
   }
    return a.exec();
}

操作二进制文件

#include <QCoreApplication>
#include<QFile>
#include<QDebug>
#include<QDate>
#include<QDataStream>
int main(int argc, char *argv[])
{
    //往文件中写入数据
    QCoreApplication a(argc, argv);

     QFile  binFile("info.bat");
     if(binFile.open(QIODevice::WriteOnly | QIODevice::Truncate))
     {
         QDataStream out(&binFile);
         out<<QString("半生瓜のblog")<<QDate::fromString("2022-01-24","yyyy-MM-dd")<<(qint32)19;
          binFile.close();
     }
     else
     {
         qDebug()<<binFile.errorString();
     }
     binFile.setFileName("info.bat");//指明要操作的文件
     if(binFile.open(QIODevice::ReadOnly))
     {
         QDataStream in(&binFile);
        //怎么写怎么读
         QString Name;
         QDate NowTime;
         qint32 Age;
         in>>Name>>NowTime>>Age;
         qDebug()<<Name<<NowTime<<Age;
         binFile.close();
     }
     else
     {
          qDebug()<<binFile.errorString();
     }

    return a.exec();
}

示例:获取文件信息

 

void FileInfo::getFileInfo(QString &fileName)
{
    //通过这个类来获取文件的信息
    QFileInfo info(fileName);
    qint64 size = info.size();//获取文件大小
    QDateTime createTime = info.created();//获取文件创建时间
    QDateTime lastModTime = info.lastModified();//获取文件最后一次被的修改的时间
    QDateTime lasReadTime = info.lastRead();//获取文件最后一次被读取的时间
    //文件的属性信息
    bool isDir = info.isDir();//是不是目录
    bool isFile = info.isFile();//是不是文件
    bool isSymLink = info.isSymLink();//是不是链接
    bool isHid = info.isHidden();//是否隐藏
    bool isReadable = info.isReadable();//是否可读
    bool isWritable = info.isWritable();//是否可写
    bool isExcutable = info.isExecutable();//是否可执行

    //根据读取信息设置控件信息
    ui->FileSizeLineEdit->setText(QString::number(size));//整型转字符串
    ui->CreateTimeLineEdit->setText(createTime.toString());//QDate转字符串
    ui->LastModTimeLineEdit->setText(lastModTime.toString());
    ui->LastCheckTimeLineEdit->setText(lasReadTime.toString());
    ui->isDirCheckBox->setChecked(isDir);
    ui->isFileCheckBox->setChecked(isFile);
    ui->isExecutableCheckBox->setChecked(isExcutable);
    ui->isSymLinkCheckBox->setChecked(isSymLink);
    ui->isHiddenCheckBox->setChecked(isHid);
    ui->isWritableCheckBox->setChecked(isWritable);
    ui->isReadableCheckBox->setChecked(isReadable);

}

void FileInfo::on_browerFileBtn_clicked()
{
    //选择文件
    QString fileName = QFileDialog::getOpenFileName(this,"打开文件",".","files(*)");
     //选择目录QString path = QFileDialog::getExistingDirectory(this,"选择目录",".");
    ui->FileNameLineEdit->setText(fileName);//文件名(带路径的)
    getFileInfo(fileName);
}

本文福利,费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QSS,OpenCV,Quick模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击费领取↓↓

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值