一、基本介绍
boost::filesystem库提供了一个现代化、面向对象的C++库,用于处理文件系统中的文件和目录。它提供了一组简单的类和函数,让我们能够方便地进行文件和目录的遍历、查找、复制和删除等操作。
二、开发环境及编译安装
安装boost::filesystem需要先安装boost库。我们可以从boost的官方网站https://www.boost.org/下载源代码,解压后进入源代码目录,运行以下命令:
./bootstrap.sh ./b2
其中,bootstrap.sh在Linux/macOS下执行,对于Windows环境下,请使用bootstrap.bat。
如果在安装boost时只需要安装boost::filesystem,那么我们可以使用以下命令:
./b2 --with-filesystem
三、文件和目录的创建
boost::filesystem库中提供了方便的函数,用于创建文件和目录。
1、创建目录
#include <boost/filesystem.hpp> #include <iostream> int main() { boost::filesystem::path dir("/Users/test"); bool success = boost::filesystem::create_directory(dir); if(success) std::cout<<"目录创建成功"<<std::endl; else std::cout<<"目录创建失败"<<std::endl; return 0; }
2、创建文件
#include <boost/filesystem.hpp> #include <iostream> int main() { boost::filesystem::path file("/Users/test.txt"); std::ofstream ofs(file.string()); if(ofs) std::cout<<"文件创建成功"<<std::endl; else std::cout<<"文件创建失败"<<std::endl; ofs.close(); return 0; }
四、文件和目录的遍历
boost::filesystem库提供了遍历文件和目录的函数,我们可以很方便地获取文件和目录列表。
1、列出当前目录下的文件和目录
#include <boost/filesystem.hpp> #include <iostream> int main() { boost::filesystem::path dir("."); boost::filesystem::directory_iterator it(dir), end; while(it != end) { std::cout <path() << std::endl; ++it; } return 0; }
2、列出指定目录下的文件和目录
#include <boost/filesystem.hpp> #include <iostream> int main() { boost::filesystem::path dir("/Users"); boost::filesystem::directory_iterator it(dir), end; while(it != end) { std::cout <path() << std::endl; ++it; } return 0; }
五、文件和目录的复制和删除
boost::filesystem库提供了方便的函数,用于文件和目录的复制和删除操作。
1、复制文件
#include <boost/filesystem.hpp> #include <iostream> int main() { boost::filesystem::path file1("/Users/test.txt"); boost::filesystem::path file2("/Users/test_copy.txt"); boost::filesystem::copy_file(file1, file2); std::cout<<"文件复制成功"<<std::endl; return 0; }
2、复制目录
#include <boost/filesystem.hpp> #include <iostream> int main() { boost::filesystem::path dir1("/Users/test"); boost::filesystem::path dir2("/Users/test_copy"); boost::filesystem::copy_directory(dir1, dir2); std::cout<<"目录复制成功"<<std::endl; return 0; }
3、删除文件
#include <boost/filesystem.hpp> #include <iostream> int main() { boost::filesystem::path file("/Users/test.txt"); bool success = boost::filesystem::remove(file); if(success) std::cout<<"文件删除成功"<<std::endl; else std::cout<<"文件删除失败"<<std::endl; return 0; }
4、删除目录
#include <boost/filesystem.hpp> #include <iostream> int main() { boost::filesystem::path dir("/Users/test"); bool success = boost::filesystem::remove_all(dir); if(success) std::cout<<"目录删除成功"<<std::endl; else std::cout<<"目录删除失败"<<std::endl; return 0; }
六、使用正则表达式查找文件
boost::filesystem库中的正则表达式函数,可以方便地找到文件名匹配某个模式的文件列表。
#include <boost/filesystem.hpp> #include <regex> #include <iostream> int main() { boost::filesystem::path dir("."); std::regex reg("test.*"); boost::filesystem::directory_iterator it(dir), end; while(it != end) { std::string filename = it->path().filename().string(); if(std::regex_match(filename, reg)) std::cout<path()<<std::endl; ++it; } return 0; }
七、总结
boost::filesystem库提供了一组简单易用的类和函数,让我们能够方便地进行文件和目录的遍历、查找、复制和删除等操作。我们可以在项目中使用这个库来操作文件系统,为我们的开发工作带来便利。
原创文章,作者:ESQLL,如若转载,请注明出处:https://www.506064.com/n/367992.html