21xrx.com
2025-03-29 12:37:10 Saturday
文章检索 我的文章 写文章
C++实现删除文件夹下所有文件
2023-06-22 02:06:07 深夜i     53     0
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`替换为指定文件夹的路径,然后运行程序即可。需要注意的是,该代码会将指定文件夹下的所有文件和子目录文件夹全部删除,请谨慎使用。

  
  

评论区