解決JavaFTP上傳文件假死問題


之前使用ftp上傳文件,代碼很穩定,用了快三年,因為數據遷移,從搭建了ftp服務器,配置好ip和賬號密碼后,再使用之前代碼發現:

在下載過程中,程序出現假死的現象,就是,既不報錯,也不拋異常,還不終止,就是一直卡着不動,沒法定位問題,自己研究了好長時間,也不知道怎么回事,后來上網又查了查,有人提出了一個方法,真心好用,在這里分享下:

解決方案:

在調用FTPClient.listFiles()或者FTPClient.retrieveFile()方法前,調用FTPClient.enterLocalPassiveMode()!
用人家的原話說,就是“這個方法的意思就是每次數據連接之前,ftp client告訴ftp server開通一個端口來傳輸數據。”說實話這是什么意思,我這個水平還不是很懂,望大家指教,現把FTP相關代碼貼出來,與大家共享。

//創建FTP連接

ftp.setDefaultPort(//FTP端口號);

ftp.connect(//FTP服務IP地址);

ftp.login(//FTP用戶名, //密碼);

ftp.setBufferSize(1024);

//設置文件類型(二進制)

ftp.setFileType(ftp.BINARY_FILE_TYPE);

//每次數據連接之前,ftp client告訴ftp server開通一個端口來傳輸數據
// 加入這行代碼后,在執行上傳或下載文件就沒問題了,看來我這個代碼還有個隱含bug,尷尬................................

ftp.enterLocalPassiveMode();


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM