Linux下递归遍历目录和文件
来源:互联网 发布:心蓝抢票软件下载 编辑:程序博客网 时间:2024/05/21 11:22
转载自: http://2309998.blog.51cto.com/2299998/1365271
#include<stdio.h>
#include<stdlib.h>
#include<dirent.h>
#include<string.h>
#include<sys/stat.h>
void
printdir(
char
*dir,
int
depth)
{
//打开目录指针
DIR *Dp;
//文件目录结构体
struct
dirent *enty;
//详细文件信息结构体
struct
stat statbuf;
//打开指定的目录,获得目录指针
if
(NULL == (Dp = opendir(dir)))
{
fprintf
(stderr,
"can not open dir:%s\n"
,dir);
return
;
}
//切换到这个目录
chdir(dir);
//遍历这个目录下的所有文件
while
(NULL != (enty = readdir(Dp) ))
{
//通过文件名,得到详细文件信息
lstat(enty->d_name,&statbuf);
//判断是不是目录
if
(S_ISDIR(statbuf.st_mode))
{
//当前目录和上一目录过滤掉
if
(0 ==
strcmp
(
"."
,enty->d_name) ||
0 ==
strcmp
(
".."
,enty->d_name))
{
continue
;
}
//输出当前目录名
printf
(
"%*s%s/\n"
,depth,
" "
,enty->d_name);
//继续递归调用
printdir(enty->d_name,depth+4);
}
else
{
//输出文件名
printf
(
"%*s%s\n"
,depth,
" "
,enty->d_name);
}
}
//切换到上一及目录
chdir(
".."
);
//关闭文件指针
closedir(Dp);
}
int
main(
int
argc,
char
**argv)
{
char
*topdir =
"/home/administrator/桌面/test"
;
if
(argc > 2)
{
printf
(
"it is in here\n"
);
topdir = argv[1];
}
printf
(
"Directory scan of %s\n"
,topdir);
printdir(topdir,0);
printf
(
"Done\n"
);
exit
(0);
}
struct dirent
{
long d_ino; /* inode number 索引节点号 */
off_t d_off; /* offset to this dirent 在目录文件中的偏移 */
unsigned short d_reclen; /* length of this d_name 文件名长 */
unsigned char d_type; /* the type of d_name 文件类型 */
char d_name [NAME_MAX+1]; /* file name (null-terminated) 文件名,最长256字符 */
}
函数名: lstat
功 能: 获取一些文件相关的信息
用 法: int lstat(const char *path, struct stat *buf);
参数:
path:文件路径名。
filedes:文件描述词。
buf:是以下结构体的指针
struct stat {
dev_t st_dev; /* 文件所在设备的标识 */
ino_t st_ino; /* 文件结点号 */
mode_t st_mode; /* 文件保护模式 */
nlink_t st_nlink; /* 硬连接数 */
uid_t st_uid; /* 文件用户标识 */
gid_t st_gid; /* 文件用户组标识 */
dev_t st_rdev; /* 文件所表示的特殊设备文件的设备标识 */
off_t st_size; /* 总大小,字节为单位 */
blksize_t st_blksize; /* 文件系统的块大小 */
blkcnt_t st_blocks; /* 分配给文件的块的数量,512字节为单元 */
time_t st_atime; /* 最后访问时间 */
time_t st_mtime; /* 最后修改时间 */
time_t st_ctime; /* 最后状态改变时间 */
};
0 0
- Linux下递归遍历目录和文件
- python下递归遍历目录和文件
- MFC递归遍历目录下所有子目录和文件
- MFC递归遍历目录下所有子目录和文件
- [Linux C]递归遍历指定目录下的子目录和文件
- Qt递归遍历文件夹和文件目录
- 遍历目录下所有文件夹和文件-------递归删除空目录
- dos下遍历目录和文件
- [Windowns C]递归遍历指定目录下的子目录和文件
- 遍历某一个指定目录下的所有子目录和文件(递归)
- Qt实现遍历文件夹和文件目录(递归)
- Qt 实现遍历文件夹和文件目录(递归)
- Qt实现遍历文件夹和文件目录(递归)
- Qt 实现遍历文件夹和文件目录(递归)
- Qt实现遍历文件夹和文件目录(递归) .
- php递归遍历所有目录及子目录和文件实例
- linux下遍历目录和文件,删除过期天数目录或文件shell脚本
- 递归输出给定目录下的所有目录和文件
- Js内存泄漏及解决方案
- 如何修改Hadoop客户端的堆大小
- android开发中常用的Eclipse快捷键
- 设置自定义servlet在spring环境下的加载顺序
- AndroidManifest.xml配置文件详解
- Linux下递归遍历目录和文件
- 导入mysql数据库中文变为?号的问题
- ICSharpCode.SharpZipLib生成tar、tar.gz
- JAVA_WEB项目之在myecplise中配置SVN插件
- db2 sequence使用
- 程序开发基础学习二(C++ Google Style 命名规则)
- 将一个工程添加到另一个工程中
- 黑马程序员-java——回调机制
- 你好宝贝