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 系统中想要查看文件时间方面的信息时,不要查看它的创建时间,只查看它的最近修改时间和最近访问时间。