今天使用ftp獲取另一台服務器上的文件,發現不管切換到哪個目錄,獲取什么文件,調用FTPClient.listFiles()方法時返回的始終為空,但是代碼又運行正常沒有異常拋出。
解決的方很簡單,
在調用FTPClient.listFiles()方法前,先調用FTPClient.enterLocalPassiveMode();就可以了。
這個方法的意思就是每次數據連接之前,ftp client告訴ftp server開通一個端口來傳輸數據。
為什么要這樣做呢,因為ftp server可能每次開啟不同的端口來傳輸數據,但是在linux上,由於安全限制,可能某些端口沒有開啟,所以就出現阻塞。