24 #include <boost/version.hpp>
25 #include <boost/filesystem.hpp>
26 #include <boost/algorithm/string/predicate.hpp>
38 #include <graphlab/util/fs_util.hpp>
42 void graphlab::fs_util::
43 list_files_with_suffix(
const std::string& pathname,
44 const std::string& suffix,
45 std::vector<std::string>& files) {
46 namespace fs = boost::filesystem;
47 fs::path dir_path(pathname);
48 fs::directory_iterator end_iter;
50 if ( fs::exists(dir_path) && fs::is_directory(dir_path)) {
51 for( fs::directory_iterator dir_iter(dir_path) ;
52 dir_iter != end_iter ; ++dir_iter) {
53 if (fs::is_regular_file(dir_iter->status()) ) {
54 #if BOOST_FILESYSTEM_VERSION >= 3
55 const std::string filename = dir_iter->path().filename().string();
57 const std::string filename = dir_iter->leaf();
59 if (suffix.size() > 0 && !boost::ends_with(filename, suffix))
61 files.push_back(filename);
65 std::sort(files.begin(), files.end());
96 void graphlab::fs_util::
97 list_files_with_prefix(
const std::string& pathname,
98 const std::string& prefix,
99 std::vector<std::string>& files) {
100 namespace fs = boost::filesystem;
101 fs::path dir_path(pathname);
102 fs::directory_iterator end_iter;
104 if ( fs::exists(dir_path) && fs::is_directory(dir_path)) {
105 for( fs::directory_iterator dir_iter(dir_path) ;
106 dir_iter != end_iter ; ++dir_iter) {
107 if (fs::is_regular_file(dir_iter->status()) ) {
108 const std::string filename = dir_iter->path().filename().string();
109 if (prefix.size() > 0 && !boost::starts_with(filename, prefix)) {
112 files.push_back(dir_iter->path().string());
116 std::sort(files.begin(), files.end());
123 std::string graphlab::fs_util::
124 change_suffix(
const std::string& fname,
125 const std::string& new_suffix) {
126 size_t pos = fname.rfind(
'.');
127 assert(pos != std::string::npos);
128 const std::string new_base(fname.substr(0, pos));
129 return new_base + new_suffix;