/**
* 利用c++ 17特性遍历目录
*/
#include<iostream>
#include<filesystem>
using namespace std;
void processPath(const filesystem::path& p){
if(!exists(p)){ //目录不存在直接返回
return;
}
auto begin=filesystem::recursive_directory_iterator(p); //获取文件系统迭代器
auto end=filesystem::recursive_directory_iterator(); //end迭代器
for(auto it=begin;it!=end;it++){
const string spacer(it.depth()*2,' '); //这个是用来排版的空格
auto& entry=*it;
if( filesystem::is_regular_file(entry)){
//如果是文件
cout<<spacer<<"File:"<<entry;
cout<<"("<<filesystem::file_size(entry)<<" bytes )"<<endl;
}
else if(filesystem::is_directory(entry)){
cout<<spacer<<"Dir:"<<entry<<endl;
}
}
}
int main(){
filesystem::path p("./");
processPath(p);
return 0;
}