2012-06-11 64 views
-1

如何在C目錄及其子目錄中搜索文件? 我不允許使用find,我必須使用opendir,readdirstat如何在c目錄及其子目錄中搜索文件?

如果文件確實存在,我想執行類似命令ls -ln的操作。

+0

@JerryCoffin這應該是一個答案。 – JeremyP

+0

@JeremyP:好的,完成了。 –

回答

1

對於遍歷目錄,您將需要:opendir(3),readdir(3)closedir(3)

爲了檢查文件的類型(查看它是否是一個目錄,以及是否應該遞歸搜索),您將需要stat(2)

你將要檢查

(struct stat).st_mode & S_IFDIR 

,看是否該文件是一個目錄。有關更多信息,請參閱<sys/stat.h>

0

您已經提供了基本答案:opendir/readdir/closedir。當你走過目錄條目時,你會檢查每個目錄是指向一個文件還是一個目錄。那些涉及目錄的東西,你也會遍歷(通常是遞歸的)。對於那些引用文件的人,你將他們的名字與你正在查找的文件進行比較,看看你是否找到了它。

另一個小細節:你可能也想檢查符號鏈接。符號鏈接可以(例如)引用父目錄,這可能會導致無限遞歸。您可能希望完全忽略符號鏈接,或者您可能希望保留至少已經開始遍歷的目錄列表,並且只有當它不在列表中時才解析/遍歷符號鏈接中的內容。

1

如果我們嘗試在C中編寫一小段代碼,那麼我們可以輕鬆地完成這個搜索活動。 假設您需要在/ home/Jack /中搜索abc.txt,然後只需打開文件流並將文件路徑作爲參數傳遞。 現在當這個語句被執行時,它會嘗試打開現有的文件。如果文件存在,該API將返回非零值,否則返回-1或零。

相關問題