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

时间:2011-11-11 13:17:24

标签: android c ios

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

谢谢。

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

4 个答案:

答案 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)

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

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