zoukankan      html  css  js  c++  java
  • Linux下遍历目录下的文件

    方法1:

    http://tag.csdn.net/Article/ef431d9b-68b3-419f-9f85-1fb9279f904a.html
    //ListFile.cpp
    #include <stdio.h>
    #include 
    <dirent.h>
    #include 
    <sys/types.h>
    int main(int argc, char *argv[]){
     
    if (2 != argc){
     printf(
    "Usage:ListFileSourceFolder ");        
     
    return 1;
    }
        
      DIR
    * pDir = NULL;
      
    struct dirent* ent = NULL;
      pDir 
    = opendir(argv[1]);
      
    if (NULL == pDir){
       printf(
    "Source folder not exists!");        return 1;
    }
        

    while (NULL != (ent=readdir(pDir)))  {
     printf(
    "%s ", ent->d_name);
    }
     
    closedir(pDir);
    pDir 
    = NULL;


    //ListFile.cpp
    #include <stdio.h>
    #include 
    <dirent.h>
    #include 
    <sys/types.h>
    int main(int argc, char *argv[]){
     
    if (2 != argc){
     printf(
    "Usage:ListFileSourceFolder ");        
     
    return 1;
    }
        
      DIR
    * pDir = NULL;
      
    struct dirent* ent = NULL;
      pDir 
    = opendir(argv[1]);
      
    if (NULL == pDir){
       printf(
    "Source folder not exists!");        return 1;
    }
        

    while (NULL != (ent=readdir(pDir)))  {
     printf(
    "%s ", ent->d_name);
    }
     
    closedir(pDir);
    pDir 
    = NULL;
    法2:
    http://topic.csdn.net/t/20051221/16/4472968.html

    试试下面的代码,我是在redhat上编译运行的。   
        
      
    //g++   -o   read_dir   read_dir.cpp   
      
    //用于列出参数目录下的文件   
        
      #include   
    <stdio.h>   
      #include   
    <stdlib.h>   
        
      #include   
    <sys/types.h>   
      #include   
    <dirent.h>   
        
      
    int main(int argc,  char*argv[])   
      
    {   
      DIR 
    *dp;   
      
    struct   dirent   *dirp;   
        
      
    if(argc != 2)   
      
    {   
      printf(
    "not   enough   arguments!   exit!\n");   
      exit(
    0);   
      }
       
        
      
    if((dp =opendir(argv[1]))== NULL)   
      
    {   
      printf(
    "can't   open   %s!\n",argv[1]);   
      exit(
    0);   
      }
       
        
      
    while((dirp = readdir(dp))!=NULL)   
      printf(
    "%s\n",dirp->d_name);   
        
      closedir(dp);   
      }
       
      


    方法3

    #include   <stdio.h>   
      #include   
    <dirent.h>   
      #include   
    <sys/types.h>   
      #include   
    <sys/stat.h>   
        
      
    void  dir_scan(char *path, char *file);   
      
    int count = 0;   
        
     
    int main(int argc, char *argv[])   
     
    {   
      
    struct   stat   s;   
      
    if(argc   !=   2){   
       printf(
    "one   direction   requried\n");   
       exit(
    1);   
      }
       
      
    if(lstat(argv[1], &s) < 0){   
       printf(
    "lstat   error\n");   
       exit(
    2);   
     }
       
     
    if(!S_ISDIR(s.st_mode)){   
      printf(
    "%s not direction name\n",argv[1]);   
      exit(
    3);   
    }
       
     dir_scan(
    "",   argv[1]);   
        
     printf(
    "total: %d files\n",  count);   
     exit(
    0);   
     }
       
        
    void dir_scan(char *path,cha日 *file)   
     
    {   
      
    struct  stat s;   
      DIR 
    *dir;   
      
    struct   dirent   *dt;   
      
    char   dirname[50];   
        
      memset(dirname,
    0,50*sizeof(char));   
      strcpy(dirname,path);   
        
      
    if(lstat(file, &s)<0){   
       printf(
    "lstat   error\n");   
      }
       
        
      
    if(S_ISDIR(s.st_mode)){   
       strcpy(dirname
    +strlen(dirname), file);   
       strcpy(dirname
    +strlen(dirname), "/");   
       
    if((dir = opendir(file)) == NULL){   
        printf(
    "opendir   %s/%s   error\n");   
        exit(
    4);   
       }
       
      
    if(chdir(file) < 0{   
        printf(
    "chdir   error\n");   
        exit(
    5);   
      }
       
      
    while((dt = readdir(dir))!= NULL){   
                                                      
    if(dt->d_name[0]   ==   '.'){   
        
    continue;   
      }
     
      
      dir_scan(dirname,dt
    ->d_name);   
    }
       
      
    if(chdir(".."<  0){   
      printf(
    "chdir   error\n");   
      exit(
    6);   
     }
       
    }
    else{  
      printf(
    "%s%s\n",   dirname,   file);   
       count
    ++;   
       }
       
     }
       
  • 相关阅读:
    最新版Butterknife plugin支持butterknife7.0.1和兼容butterknife 6.1.0及下面
    Cocos2D中Action的进阶使用技巧(一)
    开源库Fab-Transformation简单使用解析
    tip of Firefox extention foxyproxy
    jQuery树形菜单,使用zTree插件,异步载入 &amp; 编辑功能&amp;Check 共存
    创建数据库以及其属性的sql语句
    Node.js开发入门—使用AngularJS
    自己动手写shell命令之ls
    剑指 | 7-利用两个栈构建一个队列
    css3使用transform属性制作js弹性运动
  • 原文地址:https://www.cnblogs.com/cy163/p/730294.html
Copyright © 2011-2022 走看看