C++ 获取目录下所有文件的绝对路径(包括子文件夹)

本代码示例使用 C++ 获取指定目录下所有文件的绝对路径,包括其子文件夹内的所有文件。

#include <iostream>
#include <filesystem>

namespace fs = std::filesystem; // 命名空间别名

void TraverseDirectory(const fs::path& path) {
    for (const auto& entry : fs::directory_iterator(path)) { // 获取目录下的所有文件和文件夹
        if (entry.is_directory()) { // 如果是文件夹,则递归遍历
            TraverseDirectory(entry.path());
        } else { // 如果是文件,则输出绝对路径
            std::cout << entry.path().string() << std::endl;
        }
    }
}

int main() {
    fs::path path = 'C:/Users/'; // 设置要遍历的目录
    TraverseDirectory(path); // 遍历目录
    return 0;
}

代码说明:

  1. 头文件:

    • iostream:用于输入输出操作。
    • filesystem:用于文件系统操作。
  2. 命名空间别名:

    • namespace fs = std::filesystem;std::filesystem 命名空间简化为 fs,方便后续使用。
  3. 遍历目录函数:

    • TraverseDirectory(const fs::path& path):接收目录路径作为参数。
    • fs::directory_iterator(path):创建目录迭代器,用于遍历目录中的所有条目(文件和文件夹)。
    • entry.is_directory():判断当前条目是否为文件夹。
      • 如果是文件夹,则递归调用 TraverseDirectory 函数继续遍历。
      • 如果是文件,则输出文件路径 entry.path().string()
  4. 主函数:

    • fs::path path = 'C:/Users/';:设置要遍历的目录路径。
    • TraverseDirectory(path);:调用 TraverseDirectory 函数遍历目录。

注意:

  • 请根据实际情况修改代码中的目录路径。
  • 该代码仅演示了如何获取文件路径,您可以根据需要修改代码实现其他操作,例如读取文件内容、创建文件等。

代码使用示例:

假设您要遍历 C:/Users/ 目录下的所有文件,运行代码后,控制台将输出该目录下所有文件的绝对路径,包括子文件夹内的文件。

C++ 获取目录下所有文件的绝对路径(包括子文件夹)

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

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