一、基本介绍
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
微信扫一扫
支付宝扫一扫