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系统调用。
如果您想在路径上获得更多信息(例如修改时间,大小……),这将非常有用。