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;
}
#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;
}
相关文章推荐
- 使用boost中的filesystem类库遍历某个目录所有的文件
- boost::filesystem经常使用使用方法具体解释
- QTCreator + MSVC10编译器 使用boost::filesystem 时 error LNK2019: codecvt ... 问题的解决
- 使用Qt的qmake管理boost::filesystem代码时出现LNK2019问题
- boost::filesystem使用手册
- boost的filesystem使用示例
- Boost::filesystem 使用小笔记
- vs2005下 使用boost::regex 和 filesystem
- 使用boost.filesystem使用时编译错误
- 使用boost中的filesystem类库遍历某个目录所有的文件
- boost之filesystem的使用
- boost::filesystem库使用入门
- Boost::filesystem 使用小笔记
- 使用boost.filesystem进行文件操作
- Boost FileSystem 库使用说明2
- [转]QTCreator + MSVC10编译器 使用boost::filesystem 时 error LNK2019: codecvt ... 问题的解决
- QTCreator + MSVC10编译器 使用boost::filesystem 时 error LNK2019: codecvt ... 问题的解决
- Boost::filesystem 使用小笔记
- 使用boost::filesystem实现目录遍…
- Boost::filesystem 使用小笔记