首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java FTP 客戶端完整實現:基於 Apache Commons Net 的上傳、下載、刪除與重命名

     編輯:Java 相關知識

文件交互場景下,FTP 仍是穩定可靠的選擇。本文封裝 commons-net-3.3.jar,提供生產級工具類 FavFTPUtil,支援斷點續傳式上傳、自定義遠端文件名、目錄自動創建、異常安全關閉連接,並經 2GB 大文件實測無重命名失敗問題。

核心功能矩陣

方法用途特色
uploadFile(..., InputStream)流式上傳適配 Controller 層 MultipartFile
uploadFileFromProduction(..., originFilename, remoteName)本地文件上傳並重命名指定遠端文件名
uploadFileFromProduction(..., originFilename)本地文件上傳保持原名自動提取文件名
deleteFile(..., remoteName)刪除遠端文件切換目錄後刪除
downloadFile(..., localPath)下載到本地忽略大小寫匹配文件名

關鍵代碼片段

// 統一連接邏輯
FTPClient ftpClient = new FTPClient();
ftpClient.setControlEncoding("UTF-8");
ftpClient.connect(hostname, port);
ftpClient.login(username, password);
if (!FTPReply.isPositiveCompletion(ftpClient.getReplyCode())) return false;
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
ftpClient.makeDirectory(pathname);
ftpClient.changeWorkingDirectory(pathname);
ftpClient.storeFile(fileName, inputStream); // 上傳核心
// ... finally 確保斷開連接

單元測試範例

public class FavFTPTest extends TestCase {
    public void testFavFTPUtil() {
        String hostname = "127.0.0.1", username = "business", password = "business";
        String pathname = "business/ebook", filename = "big.rar";
        String origin = "C:\\Users\\Downloads\\Downloads.rar";
        FavFTPUtil.uploadFileFromProduction(hostname, 21, username, password, pathname, filename, origin);
        // FavFTPUtil.downloadFile(hostname, 21, username, password, pathname, filename, "D:/");
    }
}

生產環境建議

  • 連接池化:整合 GenericObjectPool 復用 FTPClient,降低握手開銷。
  • 超時設置:setConnectTimeout(5000)、setDataTimeout(30000) 防止掛死。
  • 被動模式:ftpClient.enterLocalPassiveMode() 適配防火牆/NAT 環境。

完整代碼已整理為獨立模組,引入即用,顯著降低文件服務集成成本。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved