C++使用boost::filesystem实现遍历文件夹内文件
问题:
想要遍历指定文件夹下的文件,寻找到符合某条件的文件。
思路:
这里只记录C 17中使用 boost::filesystem 实现遍历文件夹的方法。
解决:
1、遍历获取指定路径下所有文件:使用boost::filesystem::path 和 boost::filesystem::directory_iterator。
注意:boost::filesystem::directory_iterator 不包含子文件夹内文件。
如果想迭代获取指定文件夹下所有文件(包含子文件夹内的文件)则使用boost::filesystem::recursive_directory_iterator。
//遍历获取指定路径下文件
bool GetFiles(std::vector<CString>& vecFiles, const CString& sPath)
{
try
{
vecFiles.clear();
boost::filesystem::path path(sPath);
for (const auto& iter : boost::filesystem::directory_iterator(path))
{
if (boost::filesystem::is_directory(iter.path()))//过滤子文件夹
continue;
CString sFile = iter.path().filename().string().c_str();
vecFiles.push_back(sFile);
}
return true;
}
catch (const std::exception& error)
{
CString sError = error.what();
}
return false;
}
int main()
{
std::vector<CString> vecFiles;
CString sPath = _T("D:\\");//指定路径
if (GetFiles(vecFiles, sPath))
{
for (const CString& file : vecFiles)
acutPrintf(_T("\n %s"), file);
}
return 0;
}
输出结果:以及指定路径下内容
2、boost::filesystem 几个说明:
//boost::filesystem::path
boost::filesystem::path path;
path.string(); //!< 字符串形式的文件绝对路径: D:\\xxx.xml
path.filename(); //!< 文件名: xxx.xml 包含文件名称 文件扩展名后缀
path.stem(); //!< 文件名称: xxx 不包含文件扩展名
path.extension(); //!< 文件扩展名: xml
//boost::filesystem几个函数
boost::filesystem::status() //!<查询文件或目录的状态,返回的是boost::filesystem::file_status类型的对象
boost::filesystem::is_directory() //!<判断是否是目录
boost::filesystem::is_empty() //!<判断是否为空
boost::filesystem::is_regular_file() //!<判断是否是普通文件
boost::filesystem::is_symlink() //!<判断是否是链接文件(后缀为lnk)
boost::filesystem::exists() //!<判断是否存在
boost::filesystem::file_size() //!<返回文件的size,按bytes计算
boost::filesystem::last_write_time() //!<返回文件最后一次修改的时间
boost::filesystem::space() //!<返回磁盘的总空间和剩余空间,
boost::filesystem::create_directory() //!<创建目录
boost::filesystem::create_directories() //!<递归创建整个目录结构
boost::filesystem::remove() //!<删除目录
boost::filesystem::remove_all() //!<递归删除整个目录结构
boost::filesystem::rename() //!<重命名目录
boost::filesystem::copy_file() //!<复制文件
boost::filesystem::copy_directory() //!<复制目录
boost::filesystem::absolute() //!<获取文件或目录的绝对路径
boost::filesystem::current_path() //!<如果没有参数传入,则返回当前工作目录;否则,则将传入的目录设为当前工作目录
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhggeaef
系列文章
更多
同类精品
更多
-
visual studio 2022VS 2022没办法读取内存的问题
-
opencv4.5.4 + VS2022 的开发环境搭建
-
Visual Studio 2022 首次安装出现 fatal error C1083: 没办法打开包括文件:“crtdbg.h”: No such file or directory
-
使用visual studio 2022 启动后台程序的报错 ID为xxx的进程当前未运行
-
C++使用boost::filesystem实现遍历文件夹内文件
-
这才是完美的答案--解决CMake时“could not find any instance of Visual Studio”的问题
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13