• 常用
  • 百度
  • google
  • 站内搜索

科技

C++ 创建与删除文件夹的方法指南

  • 更新日期:2025-11-27
  • 查看次数:3760

C++中创建和删除文件夹推荐使用C++17的std::filesystem,通过create_directory/create_directories创建目录,remove/remove_all删除目录,跨平台且安全。

c++如何创建和删除文件夹_c++ 文件夹创建与删除方法

在C++中创建和删除文件夹,标准库本身不直接提供跨平台的文件夹操作函数。但可以通过结合系统调用或使用C++17引入的 std::filesystem 来实现。以下是几种常用方法。

使用 C++17 std::filesystem(推荐)

从C++17开始,std::filesystem 提供了跨平台的文件系统操作接口,包括创建和删除目录。

需要包含头文件:<filesystem>,并使用命名空间 std::filesystem

创建文件夹:

使用 create_directorycreate_directories 函数。

  • create_directory(path):创建单层目录,父目录必须已存在。
  • create_directories(path):递归创建多层目录,自动创建缺失的父目录。
示例代码:

#include <iostream>
#include <filesystem>

int main() {
    std::filesystem::path dir{"test_folder/subdir"};

    // 递归创建多层目录
    if (std::filesystem::create_directories(dir)) {
        std::cout << "目录创建成功\n";
    } else {
        std::cout << "目录可能已存在或创建失败\n";
    }

    return 0;
}

删除文件夹:

使用 removeremove_all

  • remove(path):删除空目录或文件。
  • remove_all(path):递归删除整个目录树(包括所有子文件和子目录)。
示例代码:

#include <iostream>
#include <filesystem>

int main() {
    std::filesystem::path dir{"test_folder"};

    // 删除整个目录及其内容
    std::uintmax_t count = std::filesystem::remove_all(dir);
    std::cout << "删除了 " << count << " 个条目\n";

    return 0;
}

Windows 平台 API 方法

在 Windows 下,可以使用 Windows.h 中的 API。

创建文件夹:

使用 CreateDirectoryA()

#include <windows.h>

int main() {
    CreateDirectoryA("C:\\my_folder", NULL);
    return 0;
}

删除文件夹:

使用 RemoveDirectoryA(),只能删除空目录。

RemoveDirectoryA("C:\\my_folder");

Linux/Unix 系统调用

在 Linux 下可使用 mkdir()rmdir(),需包含 <sys/stat.h><sys/types.h>

创建目录:

#include <sys/stat.h>
#include <sys/types.h>

int main() {
    mkdir("my_folder", 0755); // 权限设置
    return 0;
}

删除空目录:

rmdir("my_folder");

注意:若目录非空,需先删除内部文件,或使用 system("rm -rf my_folder")(不推荐用于生产)。

跨平台兼容性建议

为保证代码可移植性,优先使用 C++17 的 std::filesystem。编译时需启用 C++17 支持:

  • GCC/Clang: 添加 -std=c++17 编译选项
  • Visual Studio: 默认支持(VS2017 及以上)

基本上就这些。使用 filesystem 是现代 C++ 推荐做法,简洁且安全。旧项目中可根据平台选择系统调用。

本文转载于:互联网 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

imtoken下载 im钱包 imtoken imtoken 快连官网 imtoken imtoken imtoken imtoken imtoken wallet imtoken imtoken官网 imtoken钱包 imtoken下载 imtoken官网 imtoken钱包 imtoken安卓下载 imtoken下载 imtoken官方下载 imtoken官网 imtoken安卓下载 imtoken下载 imtoken下载 imtoken imtoken imtoken imtoken imtoken imtoken imtoken imtoken imtoken bitget wallet telegram下载 quickq VPN trust wallet v2rayn imtoken