Qt学习——qt文件信息的获取

版权声明:本文为博主原创文章,未经博主允许不得转载。 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();
}


以下是mainwindow.h头文件内容

扫描二维码关注公众号,回复: 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("否");
    }
}
 
 
 
 


猜你喜欢

转载自blog.csdn.net/GDUTLYP/article/details/50278123