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

Java 實作 FTP 檔案上傳下載完整指南

     編輯:Java 程式設計入門

Java FTP 操作核心功能解析

在 Java 應用程式中實現 FTP(檔案傳輸協定)功能,主要包含三大核心操作:列出伺服器檔案清單、從伺服器下載檔案、以及上傳檔案至伺服器。本文將詳細解析這三項功能的實作方式,並提供完整的程式碼範例供參考。

開發前準備

開始撰寫程式碼前,請務必在專案中匯入以下兩個核心函式庫:

  • import sun.net.*;
  • import sun.net.ftp.*;

這些套件提供了 FtpClient 類別,是實現 FTP 連線與操作的基礎。

功能一:列出 FTP 伺服器檔案清單

此功能讓使用者輸入伺服器 IP、帳號、密碼與路徑,連線成功後顯示該目錄下的所有檔案。

void ftpList_actionPerformed(ActionEvent e) {
    String server = serverEdit.getText();      // FTP 伺服器 IP 位址
    String user = userEdit.getText();          // 登入帳號
    String password = passwordEdit.getText();  // 登入密碼
    String path = pathEdit.getText();          // 伺服器路徑

    try {
        FtpClient ftpClient = new FtpClient();     // 建立 FtpClient 物件
        ftpClient.openServer(server);              // 連線至 FTP 伺服器
        ftpClient.login(user, password);           // 登入驗證

        if (path.length() != 0) {
            ftpClient.cd(path);                    // 切換至指定目錄
        }

        TelnetInputStream is = ftpClient.list();   // 取得檔案清單串流
        int c;
        while ((c = is.read()) != -1) {
            System.out.print((char) c);            // 輸出檔案清單
        }
        is.close();
        ftpClient.closeServer();                   // 關閉連線
    } catch (IOException ex) {
        // 錯誤處理邏輯
    }
}

功能二:從 FTP 伺服器下載檔案

下載功能需指定遠端檔名,程式會將檔案以二進位模式讀取並寫入本地端同名檔案。

void getButton_actionPerformed(ActionEvent e) {
    String server = serverEdit.getText();
    String user = userEdit.getText();
    String password = passwordEdit.getText();
    String path = pathEdit.getText();
    String filename = filenameEdit.getText();    // 要下載的檔名

    try {
        FtpClient ftpClient = new FtpClient();
        ftpClient.openServer(server);
        ftpClient.login(user, password);

        if (path.length() != 0) {
            ftpClient.cd(path);
        }

        ftpClient.binary();                        // 設定二進位傳輸模式
        TelnetInputStream is = ftpClient.get(filename); // 取得遠端檔案輸入串流

        File file_out = new File(filename);
        FileOutputStream os = new FileOutputStream(file_out);
        byte[] bytes = new byte[1024];
        int c;

        while ((c = is.read(bytes)) != -1) {
            os.write(bytes, 0, c);                 // 寫入本地檔案
        }

        is.close();
        os.close();
        ftpClient.closeServer();
    } catch (IOException ex) {
        // 錯誤處理邏輯
    }
}

功能三:上傳檔案至 FTP 伺服器

上傳邏輯與下載對稱,讀取本地檔案並透過 FTP 串流寫入伺服器。

void putButton_actionPerformed(ActionEvent e) {
    String server = serverEdit.getText();
    String user = userEdit.getText();
    String password = passwordEdit.getText();
    String path = pathEdit.getText();
    String filename = filenameEdit.getText();    // 要上傳的檔名

    try {
        FtpClient ftpClient = new FtpClient();
        ftpClient.openServer(server);
        ftpClient.login(user, password);

        if (path.length() != 0) {
            ftpClient.cd(path);
        }

        ftpClient.binary();                        // 設定二進位傳輸模式
        TelnetOutputStream os = ftpClient.put(filename); // 取得遠端檔案輸出串流

        File file_in = new File(filename);
        FileInputStream is = new FileInputStream(file_in);
        byte[] bytes = new byte[1024];
        int c;

        while ((c = is.read(bytes)) != -1) {
            os.write(bytes, 0, c);                 // 上傳檔案內容
        }

        is.close();
        os.close();
        ftpClient.closeServer();
    } catch (IOException ex) {
        // 錯誤處理邏輯
    }
}

關鍵技術點總結

  • 連線管理:每次操作皆建立獨立連線,用畢即關閉,避免資源洩漏
  • 傳輸模式:呼叫 binary() 確保二進位檔案(圖片、執行檔等)不受損
  • 串流處理:使用 1KB 緩衝區分塊讀寫,兼顧記憶體效率與傳輸穩定
  • 例外處理:實務上應針對 IOException 做完善的錯誤記錄與使用者提示

掌握這三個核心功能,即可在 Java 應用程式中完整實現 FTP 檔案管理需求。實際專案中建議進一步封裝為工具類,並加入連線池、重試機制與進度監聽等進階功能。

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