QT 讀取文件夾下所有文件(超級簡單的方法,不需要QDirIterator)


之前,用標准C++寫過讀取文件夾。
現在用QT重寫代碼,順便看了下QT如何實現,還是相當簡單的。
主要用到QDir,詳細文檔可見這里

A program that lists all the files in the current directory (excluding symbolic links), sorted by size, smallest first:

?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
#include
#include
 
 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;
}

上面的代碼只列出了當前目錄下的文件,並沒有遞歸地進入子目錄遍歷。
遞歸遍歷子目錄如下:

?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
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

 

http://blog.chinaunix.net/uid-25749806-id-315904.html


免責聲明!

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



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