在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平台上測試結果表明此時間與創建時間相同。
最重要的是:即使我們對該文件進行壓縮和解壓,或者將壓縮包拷貝到其他地方再解壓,都不會改變文件的時間信息。