代碼樣例:spa
///////////////////////////////////////////////////// //Name: DeleteFile //Purpose: Delete file in the special directory //Author: xxxxxxxx //Created: 2011-12-01 //Copy right: //Licence: ////////////////////////////////////////////////////// #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] != '/') strcat(file_path, "/"); strcat(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("/Users/jiangtengfei/WorkSpace/test_code/tmp/asd"); return 0; } #endif