使用boost中的filesystem类库遍历某个目录所有的文件

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

使用boost中的filesystem类库遍历某个目录所有的文件

#include

#include

使用boost中的filesystem类库遍历某个目录所有的文件

int GetAllFileOfPath(const string strPath)

{

namespace fs = boost::filesystem;

// 得到配置文件夹.

if ( strPath.size() < 2 )

{

return 0;

}

fs::path full_path( fs::initial_path() );

full_path = fs::system_complete( fs::path( strPath, fs::native ) );

unsigned long file_count = 0;

unsigned long dir_count = 0;

unsigned long err_count = 0;

if ( !fs::exists( full_path ) )

{

std::cout << "找不到配置文件目录,请检查该目录是否存在:"

std::cout << full_path.native_file_string() << std::endl;

return -1;

}

// 遍历配置文件所在的文件夹,得到所有的配置文件名.

if ( fs::is_directory( full_path ) )

{

fs::directory_iterator end_iter;

for ( fs::directory_iterator dir_itr( full_path );

dir_itr != end_iter;

++dir_itr )

{

try

{

if ( fs::is_directory( *dir_itr ) )

{

string strSubDir(full_path.native_directory_string()) ;

strSubDir.append("\\");

strSubDir.append(dir_itr->leaf());

// 如果有子目录,则递归遍历.

GetAllFileOfPath(strSubDir);

}

else

{

// 先组成包括完整路径的文件名

string strFileName(full_path.native_directory_string());

strFileName.append("\\");

strFileName.append(dir_itr->leaf());

fs::path full_file( fs::initial_path() );

full_file = fs::system_complete(fs::path(strFileName, fs::native));

// 加载解析文件中的信息.

//do something;

}

}

catch ( const std::exception & ex )

{

++err_count;

string strMsg = dir_itr->leaf();

strMsg.append(",出现错误:");

strMsg.append(ex.what());

std::cout << strMsg.c_str() << std::endl;

}

}//<--for()

}

else // must be a file

{

string strMsg = full_path.native_file_string();

strMsg.append(",不是文件目录.");

std::cout << strMsg.c_str() << std::endl;

return -1;

}

return err_count;

}

相关文档
最新文档