Today we will look into Java FTP download file example using Apache Commons Net API. Few days back I wrote a post on how to FTP Upload File using Apache Commons Net API. Here we will learn how to use apache commons Net API to download file from FTP server.
Java FTP Download
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
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 = ftpDownloader.downloadFile("sitemap.xml", "/Users/pankaj/tmp/sitemap.xml"); System.out.println("FTP File downloaded successfully"); ftpDownloader.disconnect(); } catch (Exception e) { e.printStackTrace(); } } } |
In above program constructor, we are creating FTP connection and then using downloadFile()
method to download the file located on FTP server to local system. FTPClient retrieveFile()
method is used to download file from FTP server.
Note that the remote file path should be relative to the FTP user home directory.
Here is the output of the above FTP download file example program.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
<span style="color: #008000;"><strong><code> 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. </code></strong></span> |
That’s all for FTP download file example using Apache commons Net API.