我使用Apache FTPClient使用以下庫使用Apache FTPclient進行排序,並下載使用Collections.sort()文件
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPConnectionClosedException;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPFileFilter;
的文件在FTP文件夾從FTP站點下載文件是在格式如下
NNNN_YYYYMMDDHHMMSS.SSS
例子提供如下:
32345_20131224091824445.zip
42345_20131224091824545.zip
12345_20131224091824145.zip
22345_20131224091824345.zip
52345_20131224091824745.zip
62345_20131224091824645.zip
我做什麼的現在是我使用listDir()方法列出目錄中的文件,並將每個文件名添加到ArrayList中。
然後,我使用Collections.sort(myArrayOfFileNames)對ArrayList進行排序。這對我來說很有效,因爲它按文件名排序文件。
現在我想通過文件名(不是系統時間戳)上的時間戳排序文件。這意味着在進行排序之前,我必須以某種方式去除之前包括_字符在內的所有內容。
鑑於我需要完整的文件名能夠在排序後下載文件,我想我應該有某種鍵,價值地圖,我將存儲全名作爲關鍵和剝離值作爲地圖中的「值」,然後對值進行排序。我的地圖會是這個樣子
key value
32345_20131224091824445.zip 20131224091824445.zip
42345_20131224091824545.zip 20131224091824545.zip
12345_20131224091824145.zip 20131224091824145.zip
22345_20131224091824345.zip 20131224091824345.zip
52345_20131224091824745.zip 20131224091824745.zip
62345_20131224091824645.zip 20131224091824645.zip
上述解決方案可能會工作,但有一個更快的或清潔的解決方案,因爲我覺得上述方案可能不是最好的。
我想了解爲什麼你需要這個hashmap。如果剝離數字是唯一的問題,那麼去掉這些數字(在_之前)然後將它們存儲在數組列表中是多麼困難。 – Ashish
因爲我需要知道什麼原始文件名是能夠下載文件。要下載文件名,我必須提供完整的名稱。 – ziggy
我必須獲取文件名列表,對它們進行排序,然後使用排序列表以正確的順序下載文件。在下載期間,我只能指定正確的完整文件名,而不是帶有已刪除數字的文件名,因此我必須將兩者都存儲在地圖中。 – ziggy