Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1321130
  • 博文数量: 177
  • 博客积分: 3640
  • 博客等级: 中校
  • 技术积分: 1778
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-27 16:51
文章分类

全部博文(177)

文章存档

2014年(1)

2013年(10)

2012年(3)

2011年(163)

分类: LINUX

2011-05-15 20:43:40

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

阅读(30028) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~