c语言删除空目录及空文件
来源:互联网 发布:郑爽白莲花邪教知乎 编辑:程序博客网 时间:2024/04/30 10:15
c语言删除空目录及空文件
今天本来是要写个小程序来删除项目中生成的空目录和空文件的,不过又说不要了,下午得空还是找了点资料试了下
还是对一些系统函数不熟悉,一直在百度找函数的作用
#include <stdio.h>#include <sys/stat.h>#include <unistd.h>#include <stdlib.h>#include <errno.h>#include <dirent.h>#include <string.h>void error_quit(const char *msg) //打印错误信息,并且退出{ perror(msg); exit(-1);}void change_path(const char *path){if(chdir(path)==-1) //同linux里面cd的作用 error_quit("chdir");}void rm_dir(const char *path){ int a=0; FILE*fp;int flag = 0; DIR *dir;struct dirent *dirp;struct stat buf;char *p=getcwd(NULL,0);//获取当前工作目录 if((dir=opendir(path))==NULL)//打开路径文件或是目录error_quit("OpenDir");change_path(path);while(dirp=readdir(dir))//本函数用来读取目录。返回是dirent结构体指针{ if((strcmp(dirp->d_name,".")==0) || (strcmp(dirp->d_name,"..")==0)){ a++;continue;} if(stat(dirp->d_name,&buf)==-1)//获取 dirp->d_name的文件状态,保存在buf结构体中 error_quit("stat");if(S_ISREG(buf.st_mode) )//功能是判断一个路径是否为文件 { if(buf.st_size == 0) //如果文件为空就删掉{remove(dirp->d_name); //删除文件 }else{ continue ;} }else if(S_ISDIR(buf.st_mode) )//功能是判断一个路径是否为目录{ if ( a ==2) //判断是否是空目录,空目录也是有两个目录的,与linux里面是一样的 . 和 ..文件{rm_dir(dirp->d_name); // 删除目录 这里不可以用remove,还不一样,目录和文件不一样的/*if(rmdir(dirp->d_name)==-1)error_quit("rmdir");printf("rm %s Successed . . .\n",dirp->d_name);*/continue;}else {continue; }}// if(remove(dirp->d_name)==-1)// error_quit("remove");printf("rm %s Successed111111111111111 . . .\n",dirp->d_name);}closedir(dir);change_path(p);// if(rmdir(path)==-1)// error_quit("rmdir");rmdir(path); printf("rm %s Successed222222222222222222222 . . .\n",path);}int main(int argc,char **argv){ //写全路径 ,删除文件夹1下面的空目录及空文件 rm_dir("C:/Documents and Settings/Administrator/My Documents/C-Free/Projects/remove文件夹/1"); return 0;}在windows上测试过是可以的,满足条件了。效果如下图
2.在linux系统上 由于文件的读取顺序不一样 隐藏的 , .和.. 两个隐藏文件是后面读得,windows里面是首先读得
只要把if ( a ==2) 换成if ( a ==0 )
就可以了,还有主函数调用的时候改变文件夹的路径的问题,现在当前目录是/tmp/test/1,我在文件夹1下面创建了2个文件夹,经过测试是可以的
效果如下
- c语言删除空目录及空文件
- 删除目录下所有的空文件及空目录
- 删除空目录和空文件
- linux下空目录与空文件
- 删除空文件,及非空文件的DOS命令
- linux中find批量删除空文件及空文件夹脚本
- Linux中find批量删除空文件及空文件夹脚本
- cmd自动删除当前目录及子目录中的所有空文件
- C语言清空文件内容
- powershell删除空文件
- java删除空文件
- linux删除空文件
- C# 递归 删除指定目录下的空文件
- Python删除某一目录下的空文件(夹)
- 自己用代码实现非空目录的删除(java及C语言)
- 如何删除空文件DeleteFile
- 无法删除空文件解决办法
- C语言实现Linux下删除非空目录
- JavaScript树形目录 收集整理
- 缓冲加载图片的 jQuery 插件 lazyload.js 使用方法详解
- matplotlib画图时的中文设置
- Android内存泄漏简介
- MySQL规范
- c语言删除空目录及空文件
- android sqlite *.db-journal
- MFC中调用C#控件
- MySQL索引优化
- Ubuntu 12.04下安装Google Chrome 21稳定版
- java 正则表达式用法(2)
- android端和服务端session保持
- spring自动扫描和管理bean
- 文件唯一标识