版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/GDUTLYP/article/details/50278123
文件信息类:QFileInfo
对文件的操作是程序开发过程中的一个基础环节,文件的读写存删都是其它操作的支撑。而文件的操作对于文件属性有很大的依赖性。对于文件信息的获取,Qt提供了专门的文件信息类,用来获取、判断文件的信息参数。写了一个简单的Qt程序来解释QFileInfo类提供的各个方法的功能、作用以及区别。
图1 Qt界面程序
以下是程序源代码部分:
首先是主函数main()
#include <QtGui/QApplication>
#include <QTextCodec>
#include "mainwindow.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
//Qt语言的国际化显示
QTextCodec::setCodecForTr(QTextCodec::codecForName("GB18030"));
QTextCodec::setCodecForLocale(QTextCodec::codecForName("GB18030"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GB18030"));
MainWindow w;
w.show();
return a.exec();
}
扫描二维码关注公众号,回复:
3768746 查看本文章
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
//调试用头文件
#include <QString>
#include <QDebug>
#include <QMessageBox>
//文件属性头文件
#include <QDir> //目录头文件
#include <QFileInfo> //文件信息头文件
#include <QFileDialog> //文件对话框头文件
#include <QDateTime> //日期时间头文件
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void onexitbutton(); //退出按钮响应函数
void onopenbutton(); //打开按钮响应函数
private:
Ui::MainWindow *ui;
QString strname;
};
#endif // MAINWINDOW_H
最后是mainwindow.cpp源文件的内容
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
strname.clear();
this->setWindowTitle(tr("QFileInfo类函数"));
QObject::connect(ui->exit_button,SIGNAL(clicked()),this,SLOT(onexitbutton()));
QObject::connect(ui->open_button,SIGNAL(clicked()),this,SLOT(onopenbutton()));
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::onexitbutton()
{
this->close();
}
void MainWindow::onopenbutton()
{
//strname = "C:\\"; //测试是否为根目录
//strname = "E:\\Qt_study\\exercise\\fileinfo\\123.txt"; //测试文件是否存在
strname = QFileDialog::getOpenFileName(this,"打开",0,"文本文件(*.txt);;压缩文件(*.zip);;所有文件(*.*)");
qDebug()<<strname; //调试打印文件路径信息
QFileInfo fileinfo(strname); //创建文件信息实体对象
/******************************************************************/
//测试文件路径:E:\Qt_study\exercise\fileinfo\测试文档.test.gdut.txt
//<目录名> E:\Qt_study\exercise\fileinfo
//<文件名> 测试文档
//<后缀名> test.gdut
//<扩展名> txt
/******************************************************************/
//<功能> 获取被打开文件所在目录的绝对路径(目录名)
//<结果> E:/Qt_study/exercise/fileinfo
{
QDir dir = fileinfo.absoluteDir();//复合语句中定义对象,语句结束,对象销毁
ui->result_lineEdit_01->setText(dir.path());
}
//<功能> 获取被打开文件的绝对路径(目录名+文件名+后缀名+扩展名)
//<结果> E:/Qt_study/exercise/fileinfo/测试文档.test.gdut.txt
ui->result_lineEdit_02->setText(fileinfo.absoluteFilePath());
//<功能> 获取被打开文件所在目录的绝对路径(目录名)
//<结果> E:/Qt_study/exercise/fileinfo
ui->result_lineEdit_03->setText(fileinfo.absolutePath());
//<功能> 获取被打开文件的文件名(文件名)适用于Mac OS X,其他平台返回空
//<结果> *****该函数仅适用于Mac OS X*****
if(fileinfo.bundleName().isEmpty())
{
ui->result_lineEdit_04->setText("*****该函数仅适用于Mac OS X*****");
}
else
{
ui->result_lineEdit_04->setText(fileinfo.bundleName());
}
//<功能> 获取被打开文件的基本名称(文件名)
//<结果> 测试文档
ui->result_lineEdit_05->setText(fileinfo.baseName());
//<功能> 获取被打开文件的完整基本名称(文件名+后缀名)
//<结果> 测试文档.test.gdut
ui->result_lineEdit_06->setText(fileinfo.completeBaseName());
//<功能> 获取被打开文件的全部后缀名(后缀名+扩展名)
//<结果> test.gdut.txt
ui->result_lineEdit_07->setText(fileinfo.completeSuffix());
//<功能> 获取被打开文件的最后后缀名(扩展名)
//<结果> txt
ui->result_lineEdit_08->setText(fileinfo.suffix());
//<功能> 获取被打开文件的整体名称(文件名+后缀名+扩展名)
//<结果> 测试文档.test.gdut.txt
ui->result_lineEdit_09->setText(fileinfo.fileName());
//<功能> 获取被打开文件的整体路径(目录名)
//<结果> E:/Qt_study/exercise/fileinfo
ui->result_lineEdit_10->setText(fileinfo.path());
//<功能> 获取被打开文件的完整名称(目录名+文件名+后缀名+扩展名)
//<结果> E:/Qt_study/exercise/fileinfo/测试文档.test.gdut.txt
ui->result_lineEdit_11->setText(fileinfo.filePath());
//<功能> 获取被打开文件的父级目录(目录名)
//<结果> E:/Qt_study/exercise/fileinfo
{
QDir dir = fileinfo.dir();//复合语句中定义对象,语句结束,对象销毁
ui->result_lineEdit_12->setText(dir.path());
}
//<功能> 获取被打开文件的创建时间(日期+时间)
//<结果> 2015-12-12 13:28:25
{
QDateTime datetime = fileinfo.created();//语句结束,对象销毁
ui->result_lineEdit_13->setText(datetime.toString("yyyy-MM-dd hh:mm:ss"));
}
//<功能> 获取被打开文件的最后修改时间(日期+时间)
//<结果> 2015-12-12 13:28:25
{
QDateTime datetime = fileinfo.lastModified();//语句结束,对象销毁
ui->result_lineEdit_14->setText(datetime.toString("yyyy-MM-dd hh:mm:ss"));
}
//<功能> 获取被打开文件的最后访问时间(日期+时间)
//<结果> 2015-12-12 13:28:25
{
QDateTime datetime = fileinfo.lastRead();//语句结束,对象销毁
ui->result_lineEdit_15->setText(datetime.toString("yyyy-MM-dd hh:mm:ss"));
}
//<功能> 获取被打开文件的字节大小(字节数)
//<结果> 669字节
{
QString bytes;//语句结束,对象销毁
bytes.setNum(fileinfo.size(),10);//qDebug()<<temp;
ui->result_lineEdit_16->setText(bytes+"字节");
}
//<功能> 获取被打开文件所属组别(管理员/用户,该函数一般用于Linux操作系统)
//<结果> *****您使用的操作系统不存在分组*****
if(fileinfo.group().isEmpty())
{
ui->result_lineEdit_17->setText("*****您使用的操作系统不存在分组*****");
}
else
{
ui->result_lineEdit_17->setText(fileinfo.group());
}
//<功能> 获取被打开文件所属组别的ID
//<结果> 4294967294
ui->result_lineEdit_18->setText(QString::number(fileinfo.groupId(),10));
//<功能> 获取被打开文件的拥有者(管理员/用户)
//<结果> *****您使用的操作系统不存在分组*****
if(fileinfo.owner().isEmpty())
{
ui->result_lineEdit_19->setText("*****您使用的操作系统不存在分组*****");
}
else
{
ui->result_lineEdit_19->setText(fileinfo.owner());
}
//<功能> 获取被打开文件的拥有者的ID
//<结果> 4294967294
{
QString uid;//语句结束,对象销毁
uid.setNum(fileinfo.ownerId(),10);
ui->result_lineEdit_20->setText(uid);
}
//>==============尚未完成==============<//
//<功能> 获取被打开文件的访问权限
//<结果>
// QFile file;
// file.permissions().i
// qDebug()<<fileinfo.permissions();
// ui->result_lineEdit_21->setText();
//>=========================================<//
//<功能> 判断被打开文件的路径是否为目录路径
//<结果> 否
if(fileinfo.isDir())
{
ui->result_lineEdit_22->setText("是");
}
else
{
ui->result_lineEdit_22->setText("否");
}
//<功能> 判断被打开文件的路径是否为文件路径
//<结果> 是
if(fileinfo.isFile())
{
ui->result_lineEdit_23->setText("是");
}
else
{
ui->result_lineEdit_23->setText("否");
}
//<功能> 判断被打开文件的路径是否为绝对路径
//<结果> 是
if(fileinfo.isAbsolute())
{
ui->result_lineEdit_24->setText("是");
}
else
{
ui->result_lineEdit_24->setText("否");
}
//<功能> 判断被打开文件的路径是否为相对路径
//<结果> 否
if(fileinfo.isRelative())
{
ui->result_lineEdit_25->setText("是");
}
else
{
ui->result_lineEdit_25->setText("否");
}
//<功能> 判断被打开文件的路径是否为根目录
//<结果> 否
if(fileinfo.isRoot())
{
ui->result_lineEdit_26->setText("是");
}
else
{
ui->result_lineEdit_26->setText("否");
}
//<功能> 判断被打开文件是否存在
//<结果> 是
if(fileinfo.exists())
{
ui->result_lineEdit_27->setText("是");
}
else
{
ui->result_lineEdit_27->setText("否");
}
//<功能> 判断被打开文件是否为Mac包文件
//<结果> 否
if(fileinfo.isBundle())
{
ui->result_lineEdit_28->setText("是");
}
else
{
ui->result_lineEdit_28->setText("否");
}
//<功能> 判断被打开文件是否为可读文件
//<结果> 是
if(fileinfo.isReadable())
{
ui->result_lineEdit_29->setText("是");
}
else
{
ui->result_lineEdit_29->setText("否");
}
//<功能> 判断被打开文件是否为可写文件
//<结果> 是
if(fileinfo.isWritable())
{
ui->result_lineEdit_30->setText("是");
}
else
{
ui->result_lineEdit_30->setText("否");
}
//<功能> 判断被打开文件是否为隐藏文件
//<结果> 否
if(fileinfo.isHidden())
{
ui->result_lineEdit_31->setText("是");
}
else
{
ui->result_lineEdit_31->setText("否");
}
//<功能> 判断被打开文件是否为可执行文件
//<结果> 否
if(fileinfo.isExecutable())
{
ui->result_lineEdit_32->setText("是");
}
else
{
ui->result_lineEdit_32->setText("否");
}
}