Qt5文件及磁盘处理

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

  • 处理文本文件,可使用QTextStream类,它可以操作QIODevice/QByteArray和QString。使用QTextStream的流操作符,可以方便地读写单词、行和数字。为了产生文本,QTextStream还提供了填充、对齐和数字格式化的选项。
  • 处理二进制文件,可以使用QDataStream类,它提供了将二进制文件穿行化的功能,用于实现C++基本数据类型,如char、short、int、char*等的串行化。更复杂的串行化的操作则是通过数据类型分解为基本类型来完成的。
  • 处理临时文件,可使用QTemporaryFile类
  • 获取文件信息,可以使用QFileInfo类
  • 处理目录可以使用QDir类,QDir类具有存取目录结构和内容的能力,使用它可以操作目录、存取目录或文件信息、操作底层文件系统,而且还可以存取Qt的资源文件。
  • 监视文件和目录变化,可以使用QFileSystemWatcher类

处理文本文件

#include <QCoreApplication>
#include <QFile>
#include<QDebug>
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    //打开文件有两种方式,一是在构造函数中指定文件名,另一种是使用setFileName()函数设置文件名
    QFile data("data.txt");
//    QFile file("textFile1.txt");
    //Truncate表示将原来的文件中的内容清空
    if(data.open (QIODevice::WriteOnly | QFile::Truncate))
    {
        QTextStream out(&data);
        out<<"score:"<<qSetFieldWidth (10)<<left<<90<<endl;
    }
    return a.exec();
}

(a) if(data.open(QFile::WriteOnly|QFile::Truncate)):参数QFile::Truncate表示将原来文件中的内容清空。输出时将格式设为左对齐,占10个字符位置。
(b) out<<QObject::tr(“score:”)<<qSetFieldWidth(10)<<left<<90<<endl:用户使用格式化函数和流操作符设置需要的输出格式。其中,qSetFieldWidth()函数是设置字段宽度的格式化函数。除此之外,QTextStream还提供了其他一些格式化函数,见表。
在这里插入图片描述
其中,left操作符是QTextStream定义的类似于中的流操作符。QTextStream还提供了其他一些流操作符
在这里插入图片描述

目录操作

使用QDir类的entryInfoList()方法,按照某种过滤方式获得目录下的文件列表。

    QString root = "/";
    QDir rootDir(root);
    QStringList string;
    string << "*";
    QFileInfoList list = rootDir.entryInfoList (string);

函数原型:

    /**
     * nameFilters  指定了文件名的过滤方式,如“*”,“.tar.gz"
     * filters 指定了文件属性的过滤方式,如目录、文件、读写属性
     * SortFlags 指定了列表的排序情况
     *QFileInfoList entryInfoList(
				     const QStringList &nameFilters, 
				     Filters filters = NoFilter,
				     SortFlags sort = NoSort) const;
     */

其中,QDir::Filter定义了一系列的过滤方式:
在这里插入图片描述
QDir::SortFlag定义了一系列排序方式:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SOC罗三炮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值