Qt總結之四:讀取資料夾所有檔案
阿新 • • 發佈:2019-01-05
之前,用標準C++寫過讀取資料夾。
現在用QT重寫程式碼,順便看了下QT如何實現,還是相當簡單的。
主要用到QDir,詳細文件可見這裡
A program that lists all the files in the current directory (excluding symbolic links), sorted by size, smallest first:
#include <QDir> int main(int argc, char *argv[]) { QCoreApplication app(argc, argv); QDir dir; dir.setFilter(QDir::Files | QDir::Hidden | QDir::NoSymLinks); dir.setSorting(QDir::Size | QDir::Reversed); QFileInfoList list = dir.entryInfoList(); std::cout << " Bytes Filename" << std::endl; for (int i = 0; i < list.size(); ++i) { QFileInfo fileInfo = list.at(i); std::cout << qPrintable(QString("%1%2").arg(fileInfo.size(),10).arg(fileInfo.fileName())); std::cout << std::endl; } return 0; }
上面的程式碼只列出了當前目錄下的檔案,並沒有遞迴地進入子目錄遍歷。
遞迴遍歷子目錄如下:
QFileInfoList GetFileList(QString path) { QDir dir(path); QFileInfoList file_list = dir.entryInfoList(QDir::Files | QDir::Hidden | QDir::NoSymLinks); QFileInfoList folder_list = dir.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot); for(int i = 0; i != folder_list.size(); i++) { QString name = folder_list.at(i).absoluteFilePath(); QFileInfoList child_file_list = GetFileList(name); file_list.append(child_file_list); } return file_list; }
至於,網頁處理後,需要根據輸入的目錄,生成對應的輸出目錄,可以使用QDir中的mkpath