我有一個簡單的問題。我的(Delphi 2007 with Indy 9)應用程序連接到FTP服務器以檢索文件列表。 (NLST,而不是LIST)然後我分別下載每個文件進行進一步處理。如何從文件夾中分離文件?
不幸的是,FTP站點的管理員在文件所在的文件夾中添加了一個子文件夾。當前的代碼認爲它是一個文件,因此它會嘗試下載它。當然,這失敗了。現在,我只是通過檢查過程是否成功來解決它,如果不成功,它會向錯誤日誌中添加一條消息,但它也會繼續處理其他文件。
但我想要做的是添加一些代碼,它將首先檢查文件列表中的名稱是文件名還是文件夾名。最簡單的方法是什麼?
注意:我不能依靠LIST方法返回帶有附加屬性的文件列表,因爲我連接到可以全部定義它們自己的文件格式的多個FTP服務器。此外,解析這樣的列表並不是一件容易的事情,即使我可以確定FTP服務器返回哪種列表。更糟糕的是,一些文件名只是沒有擴展名的數字,所以通配符也沒有幫助。
在這裏不是一個Delphi特有的建議,但也許你可以加載文件列表到一個數組中有兩個字段,文件名和一個標記字段來表明它是一個文件還是一個文件夾,或者一個布爾值來指示它是一個文件或不是?還有什麼是文件夾名稱的本質,我的意思是如果他們是阿爾法而不是數字,你可能可以過濾只是數字,以確保您只抓取文件? – 2010-01-05 14:24:53
文件和文件夾名稱可以是任何東西。沒有具體的方案。我的代碼只查看特定文件夾中的文件,但該文件夾可能包含類似於文件名的子文件夾。我無法控制管理員放入FTP文件夾的內容。我也無法控制FTP服務器。 – 2010-01-05 14:38:52