readdir:我怎么知道它是文件还是目录

readdir返回有关目录中所有项目的信息。 如何判断该项目是文件还是目录?

谢谢。

编辑。 对不起,忘了提一下,我的时间目标平台是iOS和android。

检查d_type是否为D_DIR

dirent包含一个成员d_type,如果它是一个文件,它可以计算为0x8,所以:

 struct dirent *DirEntry; ... if ( DirEntry->d_type == 0x8) //is a file 

这取决于标准的“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,你有一个dir。

您还可以为目录中的每个条目计算路径(但也许您可以跳过...条目)并在该路径上使用stat系统调用。

如果您想在路径上获得更多信息(例如修改时间,大小……),这将非常有用。