之前,用标准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