21xrx.com
2024-12-22 23:40:07 Sunday
登录
文章检索 我的文章 写文章
C++实现删除文件夹下所有文件
2023-06-22 02:06:07 深夜i     --     --
C++ 删除 文件夹 所有文件

在编程开发中,有时候需要删除一个文件夹下的所有文件,这在日常工作中也是比较常见的操作,比如清理临时文件夹或缓存文件夹。C++是一种高效、灵活的编程语言,它提供了很多文件操作相关的函数和接口,可以很方便地实现删除文件夹下所有文件的功能。

下面是一段C++代码,可以用来删除指定文件夹下的所有文件:


#include <iostream>

#include <cstdio>

#include <dirent.h>

#include <unistd.h>

#include <cstring>

using namespace std;

// 删除指定文件夹下的所有文件

void del_all_files(char *dir_path)

{

  DIR *dir;

  struct dirent *entry;

  char path[256];

  dir = opendir(dir_path);

  if (dir == NULL)

    cout << "Error: Failed to open dir" << endl;

    return;

  

  while ((entry = readdir(dir)) != NULL) {

    if (strcmp(entry->d_name, ".") == 0 || strcmp(entry->d_name, "..") == 0)

      // 忽略当前目录和上级目录

     else {

      snprintf(path, sizeof(path), "%s/%s", dir_path, entry->d_name);

      if (access(path, F_OK) == 0) {

        // 如果是文件,则直接删除

        if (remove(path) == -1)

          cout << "Error: Failed to remove file" << endl;

        

      } else {

        // 如果是文件夹,则递归删除

        del_all_files(path);

        // 删除空文件夹

        if (rmdir(path) == -1)

          cout << "Error: Failed to remove dir" << endl;

        

      }

    }

  }

  closedir(dir);

}

int main ()

{

  // 删除示例文件夹下的所有文件

  char dir_path[] = "/Users/zhichao/Desktop/demo";

  del_all_files(dir_path);

  return 0;

}

该代码主要包括两个函数:`del_all_files`和`main`。其中,`del_all_files`函数是实现删除文件夹下所有文件的核心逻辑,`main`是程序的入口函数。在`del_all_files`函数中,首先使用`opendir`函数打开指定文件夹,然后使用`readdir`函数遍历该文件夹下的所有目录项。在遍历时,如果当前目录项是当前目录或父目录,则忽略不处理;否则,根据当前目录项的类型进行不同的处理。

如果当前目录项是文件,则直接删除。如果当前目录项是文件夹,则递归调用`del_all_files`函数,将其下所有文件和文件夹删除。最后,返回到上一级目录时,将当前空文件夹删除。

在使用该代码时,需要将代码中的`dir_path`替换为指定文件夹的路径,然后运行程序即可。需要注意的是,该代码会将指定文件夹下的所有文件和子目录文件夹全部删除,请谨慎使用。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复