使用boost中的filesystem类库遍历某个目录所有的文件
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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;
}