8 #include <boost/filesystem.hpp>
10 namespace filesystem {
14 return (stat (name.c_str(), &buffer) == 0);
18 boost::filesystem::path p(absfilepath.c_str());
19 boost::filesystem::path d = p.parent_path();
20 if(!boost::filesystem::exists(d)) {
21 boost::filesystem::create_directories(d);
30 bool write_cvmat(
const std::string &fname,
const cv::Mat &data) {
31 std::ofstream ofs(fname.c_str(), std::ios::binary | std::ios::trunc);
34 h.elem_type = data.type();
38 ofs.write((
char *)data.ptr(), h.rows * h.cols * h.elem_size);
39 return (ofs.rdstate() & std::ofstream::failbit) == 0;
42 bool load_cvmat(
const std::string &fname, cv::Mat &data) {
44 std::ifstream ifs(fname.c_str(), std::ios::binary);
47 if (h.rows == 0 || h.cols == 0)
return false;
48 data.create(h.rows, h.cols, h.elem_type);
49 ifs.read((
char *)data.ptr(), h.rows * h.cols * h.elem_size);
50 return (ifs.rdstate() & std::ifstream::failbit) == 0;
53 bool write_sparse_vector(
const std::string &fname,
const std::vector<std::pair<uint32_t, float > > &data) {
54 std::ofstream ofs(fname.c_str(), std::ios::binary | std::ios::trunc);
55 uint32_t dim0 = data.size();
56 ofs.write((
char *)&dim0,
sizeof(uint32_t));
57 ofs.write((
char *)&data[0],
sizeof(std::pair<uint32_t, float >) * dim0);
58 return (ofs.rdstate() & std::ofstream::failbit) == 0;
61 bool load_sparse_vector(
const std::string &fname, std::vector<std::pair<uint32_t, float > > &data) {
63 std::ifstream ifs(fname.c_str(), std::ios::binary);
65 ifs.read((
char *)&dim0,
sizeof(uint32_t));
67 ifs.read((
char *)&data[0],
sizeof(std::pair<uint32_t, float >) * dim0);
68 return (ifs.rdstate() & std::ifstream::failbit) == 0;
71 std::vector<std::string>
list_files(
const std::string &path,
const std::string &ext,
bool recursive) {
72 boost::filesystem::path input_path(path);
73 std::vector<std::string> file_list;
74 if (boost::filesystem::exists(input_path) && boost::filesystem::is_directory(input_path)) {
76 boost::filesystem::recursive_directory_iterator end;
77 for (boost::filesystem::recursive_directory_iterator it(input_path); it != end; ++it) {
78 if (!boost::filesystem::is_directory(*it)) {
79 if ((ext.length() > 0 && boost::filesystem::extension(*it) == boost::filesystem::path(ext)) ||
81 file_list.push_back(it->path().string());
86 boost::filesystem::directory_iterator end;
87 for (boost::filesystem::directory_iterator it(input_path); it != end; ++it) {
88 if (!boost::filesystem::is_directory(*it)) {
89 if ((ext.length() > 0 && boost::filesystem::extension(*it) == boost::filesystem::path(ext)) ||
91 file_list.push_back(it->path().string());
100 std::string
basename(
const std::string &path,
bool include_extension) {
106 bool write_text(
const std::string &fname,
const std::string &text) {
107 std::ofstream ofs(fname, std::ios::trunc);
108 ofs.write(text.c_str(), text.size());
109 return (ofs.rdstate() & std::ofstream::failbit) == 0;