linux删除文件如何实现,linux下实现目录即文件的完整删除

功能:

1、删除目录

2、删除文件

3、删除不为空的目录即下属文件

#ifndef _DELETE_FILE

#define _DELETE_FILE

#include

#include

#include

#include

#include

#include

#include

#include

//判断是否为目录

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下遍历目录及文件,更改权限

Linux下遍历目录及文件,更改权限 引言: 我在Linux下搭建android时,将eclipse及sdk复制到/usr/下时,总会出现无法读,无法写写样的问题. 解决方案: 有两个方案: 一.将复 ...

linux下为目录和文件设置权限

摘:linux下为目录和文件设置权限 分类: Linux2012-05-09 03:18 7456人阅读 评论(1) 收藏 举报 linuxwordpressweb数据库serverfile linu ...

【ARM-Linux开发】Linux下更改目录下所有文件的所有者及其权限

[ARM-Linux开发]Linux下更改目录下所有文件的所有者及其权限 chown 更换所有者: chmod 改变权限: 想一次修改某个目录下所有文件的权限,包括子目录中的文件权限也要修改,要使用参 ...

dos下遍历目录和文件的代码(主要利用for命令)

对指定路径指定文件进行遍历的程序,这里有多个批处理代码,但运行好像有些问题,大家可以根据需要选择 ===== 文件夹结构 ======================================= ...

dos下遍历目录和文件的代码(主要利用for命令)(转)

===== 文件夹结构 ============================================= D:\test ---A Folder 1 |-----A file 1.txt | ...

linux下mnt目录作用

linux下mnt目录作用 一.mount 英文解释 登上; 爬上; 攀登; 骑上; 乘上; 跨上 可直接理解为“挂载” 挂接光驱.USB设备的目录,加载后,会在mnt里多出相应设备的目录.mnt是m ...

linux下生成core dump文件方法及设置

linux下生成core dump文件方法及设置    from:http://www.cppblog.com/kongque/archive/2011/03/07/141262.html core ...

linux下恢复误删除的文件方法(ext2及ext3)

linux下恢复误删除的文件方法(ext2及ext3) 2009-12-19 15:23:47 分类: LINUX 如果是ext2文件系统的,直接用debugfs是可以恢复出来的,但对于ext3,d ...

【收集整理】Linux下的目录讲解

Linux下的目录介绍:在Linux系统中,一切东西都是存放在一个唯一的“虚拟文件系统”中的,这个“虚拟文件系统”是树状的结构以一个根目录开始.以文件来表示所有逻辑实体和非逻辑实体,逻辑实体指文件和目 ...

随机推荐

css3选择器

原网站 cnblogs.com/tianshang/p/5982513.html通配符选择器 通配选择器的作用就是对页面上所有的元素都生效, 页面上的所有标签都会展示出通配符选择器设定的样式. 这样的 ...

VRRP协议详解

今天做了lvs的负载均衡的实验,竟然成功了,出乎我意料......哈哈哈哈 http://blog.csdn.net/fanlu319/article/details/7013258

系统隐式 Intent

1. 找出系统中所有视频 private void choiceFile() { Intent intent = new Intent(Intent.ACTION_PICK, android.prov ...

csharp: Data binding in WPF DataGrid control

Docker安装Gitlab

一.Ubuntu16.4上Docker安装Gitlab 1.安装docker 参见:https://docs.docker.com/engine/installation/linux/ubuntuli ...

网易云课堂_程序设计入门-C语言_第一周:简单的计算程序_1逆序的三位数

1 逆序的三位数(5分) 题目内容: 程序每次读入一个正三位数,然后输出逆序的数字.注意,当输入的数字含有结尾的0时,输出不应带有前导的0.比如输入700,输出应该是7. 输入格式: 每个测试是一个3 ...

How tomcat works 读书笔记十七 启动tomcat 上

一路跋山涉水,这是最后一章了. 关于tomcat的启动,有两个类,一个是Catalina类,一个是Bootstrap类. 理论上,两个类可以和到一起,但是为了支持多种运行模式,又把他们分开了. 为了让 ...

你可能感兴趣的:(linux删除文件如何实现)