Qt -- QFileInfo文件信息读取

QFileInfo文件信息读取

QFileInfo 类可读取哪些比较重要的文件信息

1、返回文件的后缀名
在这里插入图片描述
2、返回文件名称,不包括路径
在这里插入图片描述
3、返回文件路径,不包括文件名
在这里插入图片描述
4、返回文件名,包括路径(可能是绝对路径也可能是相对路径)
在这里插入图片描述
使用 QFileInfo 类需要包含头文件 #include <QFileInfo>

代码如下:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QFileDialog>
#include <QDebug>
#include <QFileInfo>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    //点击新建按钮,弹出一个文件对话框
    connect(ui->pushButton,&QPushButton::released,[=](){
        //文件对话框 -- 返回选中文件的文件路径
        QString path = QFileDialog::getOpenFileName(this,"选取文件","/home/chantui/work/resourceFile","Images (*.png *.xpm *.jpg);;Text files (*.txt);;XML files (*.xml)");

        //使用文件信息类QFileInfo
        //传入文件路径
        QFileInfo fileinfo(path);
        //1、输出文件的后缀名
        qDebug()<<"文件的后缀名:"<<fileinfo.suffix();
        //2、返回文件名称,不包括路径
        qDebug()<<"文件名称,不包括路径:"<<fileinfo.fileName();
        //3、返回文件路径,不包括文件名
        qDebug()<<"文件路径,不包括文件名:"<<fileinfo.path();
        //4、返回文件名,包括路径(可能是绝对路径也可能是相对路径)
        qDebug()<<"文件名,包括路径(可能是绝对路径也可能是相对路径):"<<fileinfo.filePath();
    });
}

MainWindow::~MainWindow()
{
    delete ui;
}

运行结果如下:
在这里插入图片描述
5、返回文件大小
在这里插入图片描述
6、返回文件创建时间、最近一次修改的时间。

文件的创建时间:birthTime() (Windows系统下可用,Linux系统下不可用)

文件的最近一次修改时间:lastModified()
在这里插入图片描述
需要注意,当需要返回文件相关时间信息的时候,就需要注意返回值了。还需要包含头文件 #include <QDateTime>

当直接用 qDebug() 来输出时,

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QFileDialog>
#include <QDebug>
#include <QFileInfo>
#include <QDateTime>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    //点击新建按钮,弹出一个文件对话框
    connect(ui->pushButton,&QPushButton::released,[=](){
        //文件对话框 -- 返回选中文件的文件路径
        QString path = QFileDialog::getOpenFileName(this,"选取文件","/home/chantui/work/resourceFile","Images (*.png *.xpm *.jpg);;Text files (*.txt);;XML files (*.xml)");

        //使用文件信息类QFileInfo
        //传入文件路径
        QFileInfo fileinfo(path);
        //1、输出文件的大小
        qDebug()<<"输出文件的大小:"<<fileinfo.size();
        //2、返回文件的创建日期
        qDebug()<<"文件的创建日期:"<<fileinfo.birthTime();
        //3、返回文件的最近一次修改日期
        qDebug()<<"文件的最近一次修改日期:"<<fileinfo.lastModified();
    });
}

MainWindow::~MainWindow()
{
    delete ui;
}

输出结果如下:
在这里插入图片描述
不知道为啥,打印出来的创建日期是无效的。

如果我想要按我指定的日期格式进行输出,那应该怎么做呢?查看帮助文档,我们可以利用 toString() 这个函数。
在这里插入图片描述
格式如何进行设置呢?看下面
在这里插入图片描述
在这里插入图片描述
代码如下,

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QFileDialog>
#include <QDebug>
#include <QFileInfo>
#include <QDateTime>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    //点击新建按钮,弹出一个文件对话框
    connect(ui->pushButton,&QPushButton::released,[=](){
        //文件对话框 -- 返回选中文件的文件路径
        QString path = QFileDialog::getOpenFileName(this,"选取文件","/home/chantui/work/resourceFile","Images (*.png *.xpm *.jpg);;Text files (*.txt);;XML files (*.xml)");

        //使用文件信息类QFileInfo
        //传入文件路径
        QFileInfo fileinfo(path);
        //1、输出文件的大小,单位是字节
        qDebug()<<"输出文件的大小,单位是字节:"<<fileinfo.size();
        //2、返回文件的创建日期
        qDebug()<<"文件的创建日期:"<<fileinfo.birthTime().toString("yyyy/MM/dd hh:mm:ss");
        //3、返回文件的最近一次修改日期
        qDebug()<<"文件的最近一次修改日期:"<<fileinfo.lastModified().toString("yyyy/MM/dd hh:mm:ss");
    });
}

MainWindow::~MainWindow()
{
    delete ui;
}

运行结果如下:
在这里插入图片描述
在 ubuntu 系统中,使用函数 birthTime() 来获取文件的创建时间总是返回无效。

在 ubuntu 系统中,点击文件->属性,也查不到创建时间,只能查看到修改和访问时间。

结论:birthTime() 在 Windows 系统中可以使用,在 Linux 系统中,文件没有创建时间这个信息,(一般只有最近修改时间和最近访问时间,分别对应函数 lastModified 和 lastRead )
在这里插入图片描述
而且前面也说了,created 函数已经被弃用了,在代码中也不要使用了。在以后的项目中,当我们在 Linux 系统中想要查看文件时间方面的信息时,不要查看它的创建时间,只查看它的最近修改时间和最近访问时间。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

xuechanba

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

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

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

打赏作者

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

抵扣说明:

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

余额充值