深度优先——遍历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
- 深度优先——遍历Linux文件系统
- 数据结构——深度优先遍历和广度优先遍历
- 深度优先搜索——DFS遍历
- 组合运算——深度优先遍历
- 图的遍历 -深度优先—C
- 图的遍历(一)—深度优先遍历
- poj 2488——dfs深度优先遍历
- 图的遍历——深度优先搜索
- 深度优先搜索遍历(DFS)——邻接矩阵存储
- 第十二周项目--深度优先遍历——DFS
- 算法基础——DFS(深度优先遍历)
- 5.3城市地图——图的深度优先遍历
- 数据结构(18)——深度优先遍历
- 图——连通分量与深度优先遍历
- [深度优先遍历—栈实现]求图中两点是否连通
- 图的遍历—深度、广度优先搜索
- 数据结构—基于深度优先遍历算法的应用
- 有向加权图的深度优先遍历—C
- bowerrc报错
- poj1328
- 表单重复提交的问题
- IOS学习之block代码块
- 编译android版本openssl
- 深度优先——遍历Linux文件系统
- Zabbix解决中文乱码问题
- Spring的基本特征和配置
- spring websocket的应用
- RecyclerView的Itme多布局与Itme的点击事件
- Mahout学习之Mahout简介、安装、配置、入门程序测试
- Java 创建线程的方式
- 贝叶斯线性回归
- 最新的布局飞快的到来,让我们探索牛逼的布局。Android Studio中ConstraintLayout的使用