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;
}

代码解释

  1. 包含头文件
    • iostream 用于输入输出操作。
    • filesystem 用于操作文件系统,是 C++17 标准库的一部分。
  2. 命名空间
    • 使用 using namespace std; 简化代码,但建议在大型项目中使用更明确的命名空间引用方式。
    • 使用 namespace fs = std::filesystem;filesystem 库创建别名,方便后续使用。
  3. getAllFiles 函数
    • 该函数接受一个 fs::path 类型的参数,表示要遍历的目录路径。
    • 使用 fs::directory_iterator 遍历目录下所有文件和文件夹。
    • 使用 fs::is_directory 判断当前项是否为文件夹。
      • 如果是文件夹,则递归调用 getAllFiles 函数,继续遍历该文件夹下的所有文件和文件夹。
      • 如果是文件,则输出其绝对路径。
  4. main 函数
    • 定义一个 fs::path 类型的变量 dir_path,存储要遍历的目录路径。
    • 调用 getAllFiles 函数,获取目录下所有文件的绝对路径。

使用方法

  1. 将以上代码保存为 .cpp 文件,例如 get_files.cpp
  2. 使用编译器编译代码,例如 g++ get_files.cpp -o get_files
  3. 运行可执行文件,例如 ./get_files

程序将输出 C:/example 目录下所有文件的绝对路径,包括子文件夹内的文件。

注意

  • 该代码使用 C++17 标准库 filesystem,需要确保编译器支持 C++17 标准。
  • 目录路径需要根据实际情况进行修改。
  • 可以根据需要修改代码,例如将输出结果写入文件,或进行其他操作。

希望本文能够帮助您理解如何使用 C++ 获取目录下所有文件的绝对路径,并提供一些示例代码。如果您有任何问题,请随时留言。

C++ 获取目录下所有文件绝对路径(含子文件夹) - 代码示例

原文地址: https://www.cveoy.top/t/topic/n2zH 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录