欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

C++ QT 文件I/O操作:QFileInfo文件信息类详解

最编程 2024-01-24 21:16:53
...

只需要创建出对象后,通过各种成员函数直接获取文件信息。

部分函数如下:

1)构造函数

// 构造函数
// 参数为文件路径,如果文件非法,仍然可以创建出QFileInfo对象。
QFileInfo:: QFileInfo(const QString & file)

2)判断文件是否存在

// 判断文件是否存在
// 如果存在返回true、如果不存在返回false
bool QFileInfo:: exists() const

3)返回文件大小,如果不存在返回0

// 返回文件大小,如果不存在返回0
qint64 QFileInfo:: size() const

4)返回基础文件名,不包含后缀

// 返回基础文件名,不包含后缀
QString QFileInfo:: baseName() const

5)获取文件最后修改日期

// 获取文件最后修改日期
QDateTime QFileInfo:: lastModified() const

6)获取文件可读性

// 获取文件可读性
// 返回值为ture可读否则不可读
bool QFileInfo:: isReadable() const

#include "dialog.h"
#include "ui_dialog.h"

Dialog::Dialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dialog)
{
    ui->setupUi(this);
    connect(ui->pushButtonOpen,SIGNAL(clicked()),this,SLOT(btnClickedSlot()));
    connect(ui->pushButtonSave,SIGNAL(clicked()),this,SLOT(btnClickedSlot()));
}
Dialog::~Dialog()
{
    delete ui;
}
void Dialog::printFileInfo()
{
    //创建文件对象
    QFileInfo fileInfo(readPath);
    if(!fileInfo.exists())
    {
        QMessageBox::warning(this,"提示","无效文件");
        return;
    }
    //获取文件大小
    qint64 fileSize = fileInfo.size();
    QString text = QString::number(fileSize);//int类型转QString类型
    text.prepend("文件大小:").append("字节");//prepend()在text前面插入字符,append()在text后面添加字符
    ui->textBrowserOpen->append(text);
    //获取文件名称
    text = fileInfo.baseName();//前面的text已经打印,重新用只需要覆盖即可。
    text.prepend("文件名称:");
    ui->textBrowserOpen->append(text);
    //获取文件最后修改日期
    text = fileInfo.lastModified().toString("修改日期:yyyy-MM-dd:hh-mm-ss");//获取后直接转为QString类型
    ui->textBrowserOpen->append(text);
    //文件可读性
    bool result = fileInfo.isReadable();//返回值为bool类型
    if(result)
    {
        ui->textBrowserOpen->append("文件可读");
    }
    else
    {
        ui->textBrowserOpen->append("文件不可读");
    }
}
void Dialog::btnClickedSlot()
{
    if(ui->pushButtonOpen == sender())
    {
        QString filter = "所有文件(*.*);;Qt(*.cpp *.h *.ui *.pro)";
        QString path = QFileDialog::getOpenFileName(this,"打开","D:/",filter);
        if(path != "")
        {
            ui->textBrowserOpen->append(path);
            readPath = path;
            printFileInfo();
        }
        else if(readPath == "")
        {
            QMessageBox::warning(this,"提示","请选择要打开的文件");
        }
    }
    else if(ui->pushButtonSave == sender())
    {

        QString filter = "所有文件(*.*);;Qt(*.cpp *.h *.ui *.pro)";
        QString path = QFileDialog::getSaveFileName(this,"保存","D:/",filter);
        if(path != "")
        {
            ui->textBrowserSave->append(path);
            writePath = path;
        }
        else if(readPath == "")
        {
            QMessageBox::warning(this,"提示","请选择要保存的文件");
        }
    }
    else if(ui->pushButtonCopy == sender())
    {

    }
}

推荐阅读