linux下实现目录即文件的完整删除
2023-09-11 14:14:05 时间
功能:
1、删除目录
2、删除文件
3、删除不为空的目录即下属文件
#ifndef _DELETE_FILE #define _DELETE_FILE #include <sys/stat.h> #include <unistd.h> #include <stdlib.h> #include <dirent.h> #include <limits.h> #include <string.h> #include <stdio.h> #include <limits.h> //判断是否为目录 bool is_dir(const char *path) { struct stat statbuf; if(lstat(path, &statbuf) ==0)//lstat返回文件的信息,文件信息存放在stat结构中 { return S_ISDIR(statbuf.st_mode) != 0;//S_ISDIR宏,判断文件类型是否为目录 } return false; } //判断是否为常规文件 bool is_file(const char *path) { struct stat statbuf; if(lstat(path, &statbuf) ==0) return S_ISREG(statbuf.st_mode) != 0;//判断文件是否为常规文件 return false; } //判断是否是特殊目录 bool is_special_dir(const char *path) { return strcmp(path, ".") == 0 || strcmp(path, "..") == 0; } //生成完整的文件路径 void get_file_path(const char *path, const char *file_name, char *file_path) { strcpy(file_path, path); if(file_path[strlen(path) - 1] != '/') sprintf(file_path,"%s%s",file_path, "/"); sprintf(file_path,"%s%s",file_path file_name); } void delete_file(const char *path) { DIR *dir; dirent *dir_info; char file_path[PATH_MAX]; if(is_file(path)) { remove(path); return; } if(is_dir(path)) { if((dir = opendir(path)) == NULL) return; while((dir_info = readdir(dir)) != NULL) { get_file_path(path, dir_info->d_name, file_path); if(is_special_dir(dir_info->d_name)) continue; delete_file(file_path); rmdir(file_path); } } } int main(int argc, char **argv) { delete_file("/home/AlexCthon/test"); return 0; } #endif
相关文章
- Linux修改某一个文件VI命令集合
- Linux内核的文件预读readahead
- linux 复制目录结构,但不复制文件
- 分布式流媒体直播服务器系统 For Linux
- linux中的.bashrc文件
- linux 统计命令执行后的行数或者统计目录下文件数目
- Linux系统调优详解(十一)——IO调优之文件打开数目限制
- Linux一切皆文件(包含好处和弊端)
- linux deepin ubuntu apt安装openjdk-8-jdk
- Linux入门开发: 从0开始搭建ubuntu系统环境(编写第一个C程序)
- linux下使用 du查看某个文件或目录占用磁盘空间的大小
- java使用Jsch实现远程操作linux服务器进行文件上传、下载,删除和显示目录信息
- 如何保存gnome的linux的 会话?相当于windows下的休眠?
- L36.linux命令每日一练 -- 第五章 Linux信息显示与搜索文件命令 -- locate和updatedb
- L34.linux命令每日一练 -- 第五章 Linux信息显示与搜索文件命令 -- echo和watch
- L27.linux命令每日一练 -- 第三章 文件过滤及内容编辑处理命令 -- vi和vim命令
- 解决安装AI算法库TensorFlow 2.0的最新入坑指南以及详细的安装教程【分别在linux和windows系统下安装】
- linux 更改文件所有者
- 嵌入式linux开发,C/C++获取文件相关属性,获取文件的三个时间
- 使用wget批量下载geo数据集的全部文件 linux下载geo数据 geo处理的数据不是下载原始数据 Linux如何下载ftp文件 geo ftp geo ftp下载 geo下载
- 【Linux】linux经常使用基本命令
- 在 Linux 开发 FastAdmin 遇到的 Git 文件权限问题
- linux中从一台机器复制文件或目录到另一台机器上linux机器上