簡體   English   中英

readdir:如何知道它是文件還是目錄

[英]readdir: how do I know if it is a file or directory

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匹配,則您有目錄。

您還可以為目錄中的每個條目計算路徑(但也許可以跳過...條目),並在該路徑上使用stat系統調用。

如果您想要有關路徑的更多信息(例如,修改時間,大小等),此功能將非常有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM