回答
Indy有一個TIdFTP
組件,它有一個List()
方法和一個DirectoryListing
屬性。請致電List()
,然後根據需要循環產生的DirectoryListing
。 DirectoryListing
中的每個項目都會告訴你它是一個文件還是一個子文件夾。如果您需要索引整個系統,則必須在每個子文件夾的遞歸循環中調用List()
。
需要注意的是,目前互聯網上的FTP服務器仍然使用數百種平臺特定的目錄列表格式。原始FTP規範RFC 959中列出的LIST
命令沒有定義任何要用於列表的格式,因此係統可以隨意使用他們想使用的任何內容,而且他們多年來一直這樣做。 Windows和Unix格式很常見,但它們不是必需的。到RFC 3659的MLSD
擴展名爲FTP,取代舊的LIST
命令(TIdFTP.List()
確實使用MLSD
,如果服務器支持它),則沒有定義正式的列表格式。
我提到這是因爲Indy 10中的TIdFTP
使用插件系統來支持許多這些不同的列表格式。每種格式在Indy單獨執行IdFTPListParse...
單元。默認情況下,只有NLST
和MLSD
格式始終處於啓用狀態。對於您要支持的任何其他列表格式,您需要在uses
子句中包含適當的IdFTPListParse...
單元,以便TIdFTP
識別它。例如,IdFTPListParseUnix
和IdFTPListParseWindows
。或者,有一個IdAllFTPListParsers
單元可啓用所有可用的解析器。當您致電TIdFTP.List()
時,TIdFTP.DirFormat
屬性將設置爲用於解析原始列表數據的解析器的名稱。
非常好的音符,thanx Remy。 –
FTP協議記錄在RFC 959。列出文件的命令稱爲LIST
,如4.1.3節所述。
我不確定LIST命令可以列出所有子目錄!!! –
當然可以。它在子目錄中也同樣適用。 –
@DavidHeffernan,它只能列出當前的dirrectory。在這種情況下,我想編寫一個可以列出所有目錄的函數。例如ftp中的List命令與Windows命令提示符中的「dir」命令相同,我想編寫一個類似「dir/s」的函數來查找ftp中的所有子目錄。 –
- 1. 如何列出ftp服務器上的目錄中的文件?
- 2. 從groovy中的FTP服務器目錄列出文件
- 3. 在R中的HTTP/FTP服務器上列出文件
- 4. 如何列出ftp目錄中的所有文件夾?
- 5. 如何使用php下載列出iis的ftp服務器的所有目錄
- 6. 在FTP服務器中列出子文件夾
- 7. 如何將FTP服務器上文件夾中的所有文件移動到同一FTP服務器中的另一個文件夾
- 8. 如何列出grails插件的所有控制器/服務
- 9. 如何從http服務器列出目錄中的所有文件?
- 10. 訪問ftp服務器中的文件
- 11. 列出文件到字符串數組和FTP服務器的列表文件
- 12. 從FTP服務器下載所有文件
- 13. 列出服務器上的所有文件使用C
- 14. FTP「ls -lt」命令:它如何列出Linux FTP和Windows FTP服務器的文件詳細信息?
- 15. 如何獲取FTP服務器上文件的文件大小?
- 16. 從C#中的FTP服務器中檢索文件列表
- 17. FTP文件上傳successefully但沒有出現在服務器
- 18. 上傳java中的文件到ftp服務器時出錯
- 19. 如何在FTP服務器目錄中的ZIP文件
- 20. 如何使用java重命名ftp服務器中的文件
- 21. 如何上傳文件到FTP服務器中的Grails
- 22. 如何從FTP服務器
- 23. 刪除Ftp服務器上的文件?
- 24. 與FTP服務器的文件同步
- 25. 找出sql服務器中的表中所有有用的列
- 26. 如何列出服務器上的所有iSCSI連接?
- 27. 如何列出mongodb服務器收到的所有命令
- 28. 從Linux FTP服務器和Windows FTP服務器下載最舊的文件
- 29. 只下載.csv文件從外部FTP服務器到我的FTP服務器
- 30. 將文件夾傳輸到FTP服務器而不遍歷所有文件
'dir'命令...? –