检查目录中的项目是否是 C 中的文件夹
Check if item on directory is folder in C
我想在检查目录中的所有文件时检查目录中的 files/items 是否是文件夹(另一个目录)
我开始使用的代码(使用 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;
}
Readdir() returns 一个结构,其中您有一个变量来检查您的目录是否包含文件 and/or 目录。这是结构:
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;
}
我想在检查目录中的所有文件时检查目录中的 files/items 是否是文件夹(另一个目录)
我开始使用的代码(使用 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;
}
Readdir() returns 一个结构,其中您有一个变量来检查您的目录是否包含文件 and/or 目录。这是结构:
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;
}