使用boost库编写跨平台遍历文件夹下的所有文件

原创 2013年12月03日 13:04:22

#include "boost/filesystem.hpp"
#include <sstream>

bool getFiles( std::string path,std::vector<std::string> &vFiles )

{
using namespace boost::filesystem;
typedef recursive_directory_iterator  rd_iterator;
rd_iterator end;
for (rd_iterator pos(path.c_str());pos != end;++pos)
{
if (is_directory(*pos))
{
pos.no_push();
}
std::stringstream streamItem;
streamItem << *pos;
std::string sFileName;
streamItem>>sFileName;
vFiles.push_back(sFileName);
}
return true;

}

这个版本有个Bug,就是文件名中存在空格的时候读取的文件名被截断,正确的做法如下,

bool getDirFiles( std::string sDirName,std::vector<std::string> &vFiles)
{
fs::path fullpath (sDirName);

if(!fs::exists(fullpath)){return false;}
fs::recursive_directory_iterator end_iter;
for(fs::recursive_directory_iterator iter(fullpath);iter!=end_iter;iter++){
try{
if (fs::is_directory( *iter ) ){
//std::cout<<*iter << "is dir" << std::endl;
//ret.push_back(iter->path().string());
}
else
{
//ret.push_back(iter->path().string());
//std::cout << *iter << " is a file" << std::endl;
std::string sFileName = iter->path().string();
vFiles.push_back(sFileName);
}
} catch ( const std::exception & ex ){
std::cerr << ex.what() << std::endl;
continue;
}
}
return true;
}


C++遍历文件夹,使用boost filesystem递归遍历文件夹

#ifndef SCANALLFILES_H #define SCANALLFILES_H #include "boost/filesystem/operations.hpp" #include "b...
  • liangzhao_jay
  • liangzhao_jay
  • 2016年01月26日 09:35
  • 1444

boost递归遍历文件夹

最近一直处于非常忙碌的状态,一直没有时间给大家带来新的boost使用的文章,好不容易抽出20分钟,这里给大家带来了一个文件夹遍历,并且更加一个源文件目录,构建一个与源文件类似的目标目录。 废话少...
  • u011676589
  • u011676589
  • 2014年10月29日 18:14
  • 1136

使用boost filesystem 库实现枚举指定目录下的所有jpeg图片;

如题:
  • smilestone322
  • smilestone322
  • 2014年04月17日 17:33
  • 1100

C 文件夹遍历(Windows + Linux)跨平台

因为最有有一个需求,需要遍历数据文件下的特定类型文件,发现网上的资料多数都是单一平台,就自己整合了一下。#ifdef _WIN32 #include #include #else #include...
  • qq_34471716
  • qq_34471716
  • 2016年04月19日 11:17
  • 116

使用boost filesystem递归遍历文件夹

使用boost filesystem遍历文件夹的时候,需要先进行一些配置: 包含的头文件:(这一部分不太明白,总之这样程序可以正常运行,先记下来) #define BOOST_ALL_N...
  • bishuilinglan
  • bishuilinglan
  • 2015年01月22日 16:26
  • 399

dirent--文件以及文件夹相关操作(跨平台)

windows客户端开发–文件以及文件夹相关操作(windows api) 一文中,主要使用了一些windows api实现文件以及文件夹的相关操作。c++语言本身不提供文件相关操作,我们也可以使用...
  • wangshubo1989
  • wangshubo1989
  • 2016年11月01日 11:35
  • 14728

利用 boost 库,编写c++类 FilesDirectoryTree,获得某个文件夹下符合某种格式要求(pcd)的文件路径,并按照降序或升序排列

为了获得某个文件加下符合某种格式的所有文件路径,并按照升序或者降序排列,编写了 FilesDirectoryTree 类。此外,另一个的目的是对boost库中的filesystem中的path类熟练熟...
  • changgeyixiao
  • changgeyixiao
  • 2017年10月30日 14:15
  • 84

跨平台实现删除文件夹中所有文件、移动文件的功能

支持 windows、linuxDeleteDirectory:清空文件夹 MoveFile_ :移动文件windows的BOOL IsDirectory(const char *pDir) {...
  • aflyeaglenku
  • aflyeaglenku
  • 2016年03月15日 18:08
  • 3928

利用 boost 库,编写c++类 FilesDirectoryTree,获得某个文件夹下符合某种格式要求(pcd)的文件路径,并按照降序或升序排列

#pragma once #include #include #include #include #include #include enum FilesSor
  • changgeyixiao
  • changgeyixiao
  • 2017年12月23日 13:08
  • 27

boost递归遍历文件夹

boost::filesystem的使用。递归遍历文件夹执行操作。
  • xueyunf
  • xueyunf
  • 2014年03月20日 11:53
  • 1755
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用boost库编写跨平台遍历文件夹下的所有文件
举报原因:
原因补充:

(最多只允许输入30个字)