我正在使用if(strstr(dir->d_name, ".") == NULL && strstr(dir->d_name, "..")
來檢查它的目錄/子目錄,但是這仍然打印出一些不是目錄的文件...使用直接結構和DIR。如何檢查文件名是否是C目錄?
3
A
回答
3
strstr
在另一個字符串內搜索一個子字符串,因此它將返回匹配每個名稱包含一個(好,或雙)期間。
你可能想用的strcmp
:
if (strcmp(dir->d_name, ".") && strcmp(dir->d_name, ".."))
.. not one of the default root folders ..
之前或之後,您可以檢查它是否是一個文件夾或不:
if (dir->d_type == DT_DIR)
..
或使用stat
。 (請注意,d_type
可能不支持某些文件系統類型。)
0
如果您在Linux上,可以使用包含條目類型的getdents
。否則,您可能不得不使用stat
/lstat
來獲取每個項目的類型信息。
1
就個人而言,我喜歡stat()和fstat()。然後用S_ISDIR(m)這樣的宏查看輸出的st_mode字段。
相關問題
- 1. C#FTP,如何檢查路徑是文件還是目錄?
- 2. 如何檢查文件是否存在文件擴展名? C#
- 3. 如何檢查目錄以查看它是否有文件
- 4. 如何檢查Swift文檔目錄中是否存在文件?
- 5. 如何檢查目錄是否是Python中的臨時目錄
- 6. 如何檢查IIS目錄是否是虛擬目錄?
- 7. 如何檢查目錄是否存在?
- 8. 檢查文件名是否存在於當前目錄
- 9. 如何檢查目錄是文件還是文件夾?
- 10. 如何檢查文件是否是python中的目錄或常規文件?
- 11. 檢查文件是否是別名Swift
- 12. c#檢查文件路徑是否包含特定目錄
- 13. 如何檢查文件是否是C++中的常規文件?
- 14. 如何檢查是否可以將文件寫入目錄?
- 15. 如何檢查目錄中是否存在文件?
- 16. 如何檢查一個文件是否在一個目錄
- 17. 如何檢查包含文件的目錄是否存在?
- 18. 如何檢查文件/目錄是否在批處理腳本
- 19. 如何輪詢目錄以檢查是否添加新文件?
- 20. 如何檢查目錄是否存在文件?
- 21. 如何檢查目錄中是否存在文件
- 22. 檢查一個目錄是否爲(文件系統)根目錄
- 23. 如何檢查文件是否是.exe
- 24. 如何檢查目錄中是否存在擴展名爲.txt的文件?
- 25. 如何檢查這是目錄路徑還是任何文件名路徑?
- 26. PHP檢查文件是否存在而不是目錄
- 27. GNU做:檢查文件是否是一個目錄
- 28. 檢查參數是否是文件或目錄
- 29. 如何檢查路徑的目標是否是目錄?
- 30. C++:如何檢查文件/目錄是否可讀? (PHP等效:is_readable)
你能展示更多的代碼嗎? –
根據操作系統的不同,如果您閱讀[readdir手冊頁](http://man7.org/linux/man-pages/man3/readdir.3.html),您將看到它有一個名爲' d_type「是目錄條目的」文件「類型。 –
請參閱[在Unix系統調用中檢查目錄是否存在](http://stackoverflow.com/questions/3828192/checking-if-a-directory-exists-in-unix-system-call)爲不工作時的答案使用'readdir()'等,或者當你的系統只提供來自[''](http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/)的'struct dirent'的POSIX規範的最小信息時dirent.h.html)定義(它是'd_name'和'd_ino')。更適應系統可以提供直接存儲在'struct dirent'結構中的擴展信息中的文件類型。 –