Автор оригинала: 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.