2017-05-24 72 views
0

文件夾我想檢查的時候我去了在目錄中的所有文件,如果其中一個文件/目錄上的項目是文件夾(另一個目錄)檢查的目錄項在C

代碼我有從(使用dirent.h)開始:

DIR *dir; 
struct dirent *ent; 
if ((dir = opendir ("c:\\src\\")) != NULL) { 
    /* print all the files and directories within directory */ 
    while ((ent = readdir (dir)) != NULL) { 
    if (ent.is_folder()) // here is what I want to implement 
     printf ("Folder: %s\n", ent->d_name); 
    else 
     printf("File %s\n", ent->d_name); 
    } 
    closedir (dir); 
} else { 
    /* could not open directory */ 
    perror (""); 
    return EXIT_FAILURE; 
} 
+0

什麼,你有什麼問題? –

+0

沒有函數ent.is_folder()你知道..它是c。如果您看到我想檢查ent(從dir讀取的)是目錄(文件夾)還是文件 –

+0

請查看https://stackoverflow.com/questions/4553012/checking-if-a-file -is-a-directory-or-just-a-file –

回答

1

READDIR()返回的結構,在其中有一個變量來檢查,如果目錄中包含的文件和/或目錄。這裏是結構:

struct dirent { 
    ino_t   d_ino;  /* numéro d'inœud */ 
    off_t   d_off;  /* décalage jusqu'à la dirent suivante 
*/ 
    unsigned short d_reclen; /* longueur de cet enregistrement */ 
    unsigned char d_type;  /* type du fichier */ 
    char   d_name[256]; /* nom du fichier */ 
}; 

所以你會在你的代碼中使用:ent-> d_type來訪問這個變量。 然後用標誌DT_DIR檢查它是否是一個目錄,如果它是一個DT_REG標誌的文件。下面

代碼工作:

DIR *dir; 
struct dirent *ent; 

if ((dir = opendir ("c:\\src\\")) != NULL) 
{ 
    /* print all the files and directories within directory */ 
    while ((ent = readdir (dir)) != NULL) { 
     if (ent->d_type == DT_DIR)// here is what I want to implement 
      printf ("Folder: %s\n", ent->d_name); 
     else if (ent->d_type == DT_REG) 
      printf("File %s\n", ent->d_name); 
    } 
    closedir (dir); 
} 
else 
{ 
/* could not open directory */ 
    perror (""); 
     return EXIT_FAILURE; 
}