IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 【QT】QT文件处理 -> 正文阅读

[C++知识库]【QT】QT文件处理

文件处理

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

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

image-20220124203618757

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();
}

示例:获取文件信息

image-20220124232543877

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);
}
  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-01-25 10:24:21  更:2022-01-25 10:25:36 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 8:52:57-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码