答案 0 :(得分:6)
检查d_type
是否为D_DIR
。
答案 1 :(得分:1)
dirent包含一个成员d_type,如果它是一个文件,它可以计算为0x8,所以:
struct dirent *DirEntry;
...
if ( DirEntry->d_type == 0x8)
//is a file
答案 2 :(得分:1)
这取决于标准" POSIX" readdir操作你没有字段d_type
根据POSIX,dirent结构包含未指定大小的字段char d_name [],>在终止空字节之前最多有NAME_MAX个字符。 POSIX.1-2001还将字段ino_t d_ino记录为XSI扩展。使用其他>字段会损害程序的可移植性。
"标准方式"是对你的文件/目录执行lstat调用并检查struct stat的st_mode字段,如果你的st_mode匹配S_ISDIR,你有一个目录。
答案 3 :(得分:0)
您还可以为目录中的每个条目计算路径(但也许您可以跳过.
& ..
条目)并在该路径上使用stat系统调用。< / p>
如果您想在路径上获得更多信息(例如修改时间,大小......),这将非常有用。