深度优先——遍历Linux文件系统

来源:互联网 发布:js获取对象的key 编辑:程序博客网 时间:2024/06/08 01:20


前言:

  最近用qt做usb驱动相关任务,需要一个能访问文件系统的程序,它要遍历给定目录下的所有内容,并按结构安排显示出目录与文件。


QFileInfoList getDir(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);   //只有文件夹    if((folder_list.size()==0)&&(file_list.size()!=0)){//目录下不存在文件夹,只存在文件的情况:不递归,只显示;        for(int j=0;j!=file_list.size();j++){           QFileInfo fileInfo = file_list.at(j);           std::cout << qPrintable(QString("%1 %2 %3").arg(fileInfo.size(), 10).arg(fileInfo.fileName()).arg(fileInfo.absoluteFilePath()) );           std::cout << std::endl;        }        std::cout <<"***************************"<< std::endl;    }    for(int i = 0; i != folder_list.size(); i++)//对目录进行递归    {        if(i==0){ //在第一次进入目录时,显示目录下的 文件 与 文件夹            for(int j=0;j!=file_list.size();j++){               QFileInfo fileInfo = file_list.at(j);               std::cout << qPrintable(QString("%1 %2 %3").arg(fileInfo.size(), 10).arg(fileInfo.fileName()).arg(fileInfo.absoluteFilePath()) );               std::cout << std::endl;            }            for(int k=0;k!=folder_list.size();k++){                QFileInfo fileInfo111 = folder_list.at(k);                std::cout << qPrintable(QString("%1 %2 %3").arg(fileInfo111.size(), 10).arg(fileInfo111.fileName()).arg(fileInfo111.absoluteFilePath()) );                std::cout << std::endl;            }            std::cout <<"***************************"<< std::endl;         }         //显示后再开始递归该目录         QString name = folder_list.at(i).absoluteFilePath();         QFileInfoList child_file_list = getDir(name);         file_list.append(child_file_list);    }    return file_list;}int main(int argc, char *argv[]){    QApplication a(argc, argv);    QString path="指定目录";    getDir(path);    return a.exec();}


后续:

  QT提供了QFileSystemModel 方法,一般情况下不需要自己去遍历文件系统做显示,直接调用该方法即可;
  [ QFileSystemModel使用方法 ]



1 0
原创粉丝点击