Qt文件信息獲取之QFileInfo


在Qt中為文件的操作和信息獲取提供了許多方便的類,常用的有QDir,QFile,QFileInfo以及QFileDialog,在本文中主要介紹用於獲取關於文件信息的QFileInfo類。

QFileInfo可以提供文件的名稱和位置信息,此外,還有文件的大小,文件的訪問權限以及此文件是不是一個符號鏈接等信息。不僅如此,我們還可以通過這個類來查看文件的創建時間,修改時間和最近一次讀取時間。

下面的程序用於獲取文件的時間信息:

 1 void MainWindow::on_browserBtn_clicked()
 2 {
 3     QString fileName = QFileDialog::getOpenFileName(this,
 4                                                     tr("打開文件"),
 5                                                     ".",
 6                                                     tr("All Files(*.*)"));
 7     if (!fileName.isEmpty())
 8     {
 9         ui->pathEdit->setText(fileName);
10         QString infoList;
11 
12         QFile file(fileName);
13         if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
14         {
15             infoList += tr("Can not open file: %1 \n").arg(fileName);
16         }
17         else
18         {
19             infoList += tr("Open file: %1 Successfully\n").arg(fileName);
20             QTextStream in(&file);
21             while (!in.atEnd()) {
22                 QString line = in.readLine();
23                 infoList += line;
24             }
25             infoList += "\n";
26             file.close();
27         }
28 
29         QFileInfo info(fileName);
30         if (info.exists())
31         {
32 
33             infoList += tr("文件名稱: %1 \n").arg(info.fileName());
34             infoList += tr("文件大小: %1 Bytes\n").arg(info.size());
35             infoList += tr("創建時間: %1 \n").arg(info.created().toString("yyyy-MM-dd hh:mm:ss"));
36             infoList += tr("修改時間: %1 \n").arg(info.lastModified().toString("yyyy-MM-dd hh:mm:ss"));
37             infoList += tr("讀取時間: %1 \n").arg(info.lastRead().toString("yyyy-MM-dd hh:mm:ss"));
38 
39             ui->infoLabel->setText(infoList);
40         }
41     }
42 }

運行此程序,結果如下圖所示:

需要說明的是,“創建時間”是指文件新建時的時間;“修改時間”是指最近一次對文件內容進行改動的時間;“讀取時間”是最近一次讀取文件的時間,從官方文檔給出的介紹指出,如果平台不支持獲取讀取時間,那么該時間應該和修改時間相同,但是,本人在Win 8平台上測試結果表明此時間與創建時間相同。

最重要的是:即使我們對該文件進行壓縮和解壓,或者將壓縮包拷貝到其他地方再解壓,都不會改變文件的時間信息。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM