Рубрики
Без рубрики

Пример загрузки Java FTP – Apache Commons Net

Пример загрузки Java по FTP с использованием API Apache Commons Net. Пример файла загрузки FTP-сервера Java FTPClient, org.apache.commons.net пример клиента.

Автор оригинала: Pankaj Kumar.

Сегодня мы рассмотрим пример загрузки файла Java по FTP с использованием API Apache Commons Net. Несколько дней назад я написал пост о том, как загрузить файл по FTP с помощью Apache Commons Net API. Здесь мы узнаем, как использовать apache commons Net API для загрузки файлов с FTP-сервера.

Загрузка Java по FTP

package com.journaldev.files;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;

import org.apache.commons.net.PrintCommandListener;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;

public class FTPDownloader {

    FTPClient ftp = null;

    public FTPDownloader(String host, String user, String pwd) throws Exception {
        ftp = new FTPClient();
        ftp.addProtocolCommandListener(new PrintCommandListener(new PrintWriter(System.out)));
        int reply;
        ftp.connect(host);
        reply = ftp.getReplyCode();
        if (!FTPReply.isPositiveCompletion(reply)) {
            ftp.disconnect();
            throw new Exception("Exception in connecting to FTP Server");
        }
        ftp.login(user, pwd);
        ftp.setFileType(FTP.BINARY_FILE_TYPE);
        ftp.enterLocalPassiveMode();
    }

    public void downloadFile(String remoteFilePath, String localFilePath) {
        try (FileOutputStream fos = new FileOutputStream(localFilePath)) {
            this.ftp.retrieveFile(remoteFilePath, fos);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public void disconnect() {
        if (this.ftp.isConnected()) {
            try {
                this.ftp.logout();
                this.ftp.disconnect();
            } catch (IOException f) {
                // do nothing as file is already downloaded from FTP server
            }
        }
    }

    public static void main(String[] args) {
        try {
            FTPDownloader ftpDownloader =
                new FTPDownloader("ftp_server.journaldev.com", "ftp_user@journaldev.com", "ftpPassword");
            ftpDownloader.downloadFile("sitemap.xml", "/Users/pankaj/tmp/sitemap.xml");
            System.out.println("FTP File downloaded successfully");
            ftpDownloader.disconnect();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

В приведенном выше конструкторе программы мы создаем FTP-соединение, а затем используем метод DownloadFile() для загрузки файла, расположенного на FTP-сервере, в локальную систему. Метод FTPClient retrieveFile() используется для загрузки файла с FTP-сервера.

Обратите внимание, что путь к удаленному файлу должен быть относительно домашнего каталога пользователя FTP.

Вот вывод приведенного выше примера программы для загрузки файлов по FTP.

220---------- Welcome to Pure-FTPd [privsep] [TLS] ----------
220-You are user number 1 of 50 allowed.
220-Local time is now 01:39. Server port: 21.
220-This is a private system - No anonymous login
220 You will be disconnected after 15 minutes of inactivity.
USER ftp_user@journaldev.com
331 User ftp_user@journaldev.com OK. Password required
PASS ftpPassword
230 OK. Current restricted directory is /
TYPE I
200 TYPE is now 8-bit binary
PASV
227 Entering Passive Mode (50,116,65,161,255,56)
RETR sitemap.xml
150-Accepted data connection
150 1427.4 kbytes to download
226-File successfully transferred
226 1.900 seconds (measured here), 0.73 Mbytes per second
FTP File downloaded successfully
QUIT
221-Goodbye. You uploaded 0 and downloaded 1428 kbytes.
221 Logout.

Это все для примера загрузки файла по FTP с использованием API Apache commons Net.