递归列出目录中的文件列表
来源:互联网 发布:java如何定义一个函数 编辑:程序博客网 时间:2024/05/21 06:45
//在Linux-rethat下实现
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <dirent.h>
#include <stdio.h>
#include <string.h>
#define MAX_PATH 1024
/* dirwalk: apply fcn to all files in dir */
void dirwalk(char *dir, void (*fcn)(char *))
{
char name[MAX_PATH];
struct dirent *dp;
DIR *dfd;
if ((dfd = opendir(dir)) == NULL) {
fprintf(stderr, "dirwalk: can't open %s\n", dir);
return;
}
while ((dp = readdir(dfd)) != NULL) {
if (strcmp(dp->d_name, ".") == 0
|| strcmp(dp->d_name, "..") == 0)
continue; /* skip self and parent */
if (strlen(dir)+strlen(dp->d_name)+2 > sizeof(name))
fprintf(stderr, "dirwalk: name %s %s too long\n",
dir, dp->d_name);
else {
sprintf(name, "%s/%s", dir, dp->d_name);
(*fcn)(name);
}
}
closedir(dfd);
}
/* fsize: print the size and name of file "name" */
void fsize(char *name)
{
struct stat stbuf;
if (stat(name, &stbuf) == -1) {
fprintf(stderr, "fsize: can't access %s\n", name);
return;
}
if ((stbuf.st_mode & S_IFMT) == S_IFDIR)
dirwalk(name, fsize);
printf("%8ld %s\n", stbuf.st_size, name);
}
int main(int argc, char **argv)
{
if (argc == 1) /* default: current directory */
fsize(".");
else
while (--argc > 0)
fsize(*++argv);
return 0;
}
- 递归列出目录中的文件列表
- java递归列出文件目录
- 递归列出目录中的所有文件,包括子文件夹
- 列出目录中的所有文件
- CMD列出目录中的文件
- 递归列出目录下的所有文件
- 谈论Java递归列出文件目录结构
- Java递归列出目录下全部文件
- 列出与禁止文件目录列表
- 递归列出目录结构
- 递归列出目录结构
- 只列出Linux中的文件或目录
- 01列出一个目录中的所有文件
- 列出一个目录中的所有文件
- 递归列出所有文件和目录 (函数)
- 递归算法 列出给定目录下的文件/java描述
- 递归算法 列出给定目录下的文件/java描述
- 算法:递归列出一个目录下面的所有文件
- 人体骨骼坐标在彩色图像中显示
- A+B for Input-Output Practice (V)
- Linux常用命令汇编自结
- New in Xdebug 2.2: Colours on the command line
- 快速排序qsort()函数和二分查找bsearch()函数
- 递归列出目录中的文件列表
- lynx安装及配置
- 快速排序代码复用的方法(未实践)
- js URl传值乱码
- Delphi : keydown与keypress的区别,组合键
- A+B for Input-Output Practice (VI)
- 网络编程Winsock——socket
- 回调函数的意义
- TabControl控件和TabPage