您的位置:首页 > 其它

boost filesystem 使用

2011-06-23 11:17 183 查看
随便记录一下,怕以后忘记。

#include <vector>
#include <string>
#include <iostream>
#include <boost/filesystem.hpp>

class FileUtils
{
public:
static void listFiles(std::string& path, std::vector<std::string>& vec);

static void listAllFiles(std::string& path,std::string& ext, std::vector<std::string>& vec);

static bool isDirectory(std::string& path);

static bool exists(std::string& path);

static std::string extension(std::string& path);

protected:
private:
};

void FileUtils::listFiles(std::string &path, std::vector<std::string> &vec)
{
boost::filesystem::path dir(path);
boost::filesystem::directory_iterator iter(dir);
boost::filesystem::directory_iterator end;
while(iter != end)
{
std::string str(path);
str.append("/");
str.append(iter->leaf());
//std::cout << str << std::endl;
vec.push_back(str);
iter ++;
}
}

void FileUtils::listAllFiles(std::string& path,std::string& ext, std::vector<std::string>& vec)
{
boost::filesystem::path dir(path);
boost::filesystem::directory_iterator iter(dir);
boost::filesystem::directory_iterator end;
while(iter != end)
{
if(boost::filesystem::is_directory(iter->status()))
{
std::string sub_path = std::string(iter->path().string());
FileUtils::listAllFiles(sub_path, ext, vec);
}
else
{
std::string str(path);
str.append("/");
str.append(iter->leaf());
std::string s = FileUtils::extension(str);
if(FileUtils::extension(str) == ext)
{
vec.push_back(str);
}
}
iter ++;
}
}

bool FileUtils::isDirectory(std::string &path)
{
boost::filesystem::path dir(path);
return boost::filesystem::is_directory(dir);
}

bool FileUtils::exists(std::string &path)
{
boost::filesystem::path dir(path);
return boost::filesystem::exists(dir);
}

std::string FileUtils::extension(std::string& path)
{
boost::filesystem::path dir(path);
return boost::filesystem::extension(dir);
}

int main(int argc, char* argv[])
{
std::string root_file= "/home/yys/fun_1.0/client/fun-lua/SceneMain.lua";
std::string path = root_file.substr(0,root_file.find_last_of('/'));
std::cout<<"path:"<<path<<root_file.find_last_of('/')<<std::endl;
std::vector<std::string> vecFiles;
FileUtils::listFiles(path,vecFiles);
for(std::vector<std::string>::iterator iter = vecFiles.begin(); iter != vecFiles.end();++iter)
{
std::cout<<*iter<<std::endl;
}
vecFiles.clear();
std::cout<<"-----------------------------"<<std::endl;
std::string file_ext(".lua");
FileUtils::listAllFiles(path,file_ext,vecFiles);
for(std::vector<std::string>::iterator iter = vecFiles.begin(); iter != vecFiles.end();++iter)
{
std::cout<<*iter<<std::endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: