一、读取目录内容
#include <stdio.h>
#include <unistd.h>
#include <dirent.h>
#include <sys/types.h>
int main(int argc,char *argv[])
{
if( argc < 2 ){
printf( "./a.out filename" );
return -1;
}
DIR *pDir = opendir(argv[1]);
if( pDir == NULL ){
perror( "opendir err" );
return -1;
}
struct dirent *pDent = NULL;
while( ( pDent = readdir(pDir) ) ){
printf("%s -%d\n", pDent->d_name, pDent->d_type);
}
closedir(pDir);
return 0;
}
二、递归统计指定目录下普通文件个数
#include <stdio.h>
#include <unistd.h>
#include <dirent.h>
#include <sys/types.h>
#include <string.h>
int count = 0;
int filecount(const char *path)
{
DIR *pDir = opendir(path);
if(pDir == NULL){
perror("opendir err ");
return -1;
}
struct dirent *pDent = NULL;
while( ( pDent = readdir(pDir) ) ){
if(pDent->d_type == DT_REG){
count++;
}
else if(pDent->d_type == DT_DIR){
if(strcmp(pDent->d_name,".") == 0 || strcmp(pDent->d_name,"..") == 0){
continue;
}
char strNewPath[1024] = {0};
sprintf(strNewPath,"%s/%s", path, pDent->d_name);
filecount(strNewPath);
}
}
closedir(pDir);
return 0;
}
int main(int argc,char *argv[])
{
if(argc < 2){
printf("./a.out filename\n");
return -1;
}
filecount(argv[1]);
printf("file count is %d\n", count);
return 0;
}