检查目录中的项目是否为C中的文件夹

时间:2017-05-24 16:54:31

标签: c file directory dirent.h

我想检查当我查看目录上的所有文件时,如果目录中的一个文件/项目是文件夹(另一个目录)

代码我从(使用dirent.h)开始:

ButtonGameObject = GameObject.Find("UI Button");

1 个答案:

答案 0 :(得分:2)

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;
}