C++ 获取目录下所有文件绝对路径(含子文件夹) - 代码示例
C++ 获取目录下所有文件绝对路径(含子文件夹)
本文将介绍使用 C++ 获取指定目录下所有文件的绝对路径,包括子文件夹内的文件。我们将使用 C++17 标准库 filesystem 来完成此任务,并提供详细的代码示例和注释。
代码示例
#include <iostream>
#include <filesystem> // C++17 标准中的库,用于操作文件系统
using namespace std;
namespace fs = std::filesystem;
void getAllFiles(const fs::path& dir_path) { // 递归函数,获取目录下所有文件的绝对路径
for (const auto& p : fs::directory_iterator(dir_path)) { // 遍历目录下所有文件和文件夹
if (fs::is_directory(p)) { // 如果是文件夹,则递归获取其下所有文件的绝对路径
getAllFiles(p.path());
}
else { // 如果是文件,则输出其绝对路径
cout << p.path() << endl;
}
}
}
int main() {
fs::path dir_path = 'C:/example'; // 目录路径,可以根据实际情况进行修改
getAllFiles(dir_path); // 获取目录下所有文件的绝对路径
return 0;
}
代码解释
- 包含头文件:
iostream用于输入输出操作。filesystem用于操作文件系统,是 C++17 标准库的一部分。
- 命名空间:
- 使用
using namespace std;简化代码,但建议在大型项目中使用更明确的命名空间引用方式。 - 使用
namespace fs = std::filesystem;为filesystem库创建别名,方便后续使用。
- 使用
getAllFiles函数:- 该函数接受一个
fs::path类型的参数,表示要遍历的目录路径。 - 使用
fs::directory_iterator遍历目录下所有文件和文件夹。 - 使用
fs::is_directory判断当前项是否为文件夹。- 如果是文件夹,则递归调用
getAllFiles函数,继续遍历该文件夹下的所有文件和文件夹。 - 如果是文件,则输出其绝对路径。
- 如果是文件夹,则递归调用
- 该函数接受一个
main函数:- 定义一个
fs::path类型的变量dir_path,存储要遍历的目录路径。 - 调用
getAllFiles函数,获取目录下所有文件的绝对路径。
- 定义一个
使用方法
- 将以上代码保存为
.cpp文件,例如get_files.cpp。 - 使用编译器编译代码,例如
g++ get_files.cpp -o get_files。 - 运行可执行文件,例如
./get_files。
程序将输出 C:/example 目录下所有文件的绝对路径,包括子文件夹内的文件。
注意
- 该代码使用 C++17 标准库
filesystem,需要确保编译器支持 C++17 标准。 - 目录路径需要根据实际情况进行修改。
- 可以根据需要修改代码,例如将输出结果写入文件,或进行其他操作。
希望本文能够帮助您理解如何使用 C++ 获取目录下所有文件的绝对路径,并提供一些示例代码。如果您有任何问题,请随时留言。
原文地址: https://www.cveoy.top/t/topic/n2zH 著作权归作者所有。请勿转载和采集!