最近再看linux方面的知识,话说如今linux前途很好吖,,,因此我也试着学linux,前几天从oschina里看了一个linux c遍历目录的源代码,但发现子目录没有进行遍历,因此进行了修改,但愿能多交流学习,本人新手,愿共同进步,高手勿喷~谢拉 linux
#include <stdio.h>
#include <dirent.h>
#include <sys/stat.h>
int trave_dir(char *path,int i)
{
DIR *d;
struct dirent *file;
struct stat buf;
if(!(d=opendir(path)))
{
printf("error opendir %s!!!\n",path);
return -1;
}
chdir(path); //必定要打开文件夹,不打开会出现错误
while((file=readdir(d)) != NULL)
{
lstat(file->d_name,&buf);
if(!(S_IFDIR&buf.st_mode))
{
printf("%*s%s\n",i,"",file->d_name);//printf特殊用法 格式输出
printf("\t\tfile size=%d\n",buf.st_size);
printf("\t\tfile last modify time=%s\n",asctime(gmtime(&buf.st_mtime)));//先转化成格林威治时间,而后返回tm结构,接着用asctime转化成标准时间(这里 不知到有没有更好的方法)
}
else
{
if(strcmp(file->d_name,".")==0||strcmp(file->d_name,"..")==0)
continue;
printf("%*s%s(dir)\n",i,"",file->d_name);
printf("\t\tfile last modify time=%s\n",asctime(gmtime(&buf.st_mtime)));
trave_dir(file->d_name,i+2);
}
}
chdir("..");
closedir(d);
return 0;
}
int main()
{
int i;
trave_dir(".",0);
return 0;
} 学习