This example demonstrates how to download a file from FTP server. To download a file we first connect to the FTP server and then login by supplying the username
and password
. To download the file we call retrieveFile()
method of the FTPClient
object. This method takes two parameters, the remote filename and an OutputStream
of the local file where the download to be saved.
package org.kodejava.example.commons.net;
import org.apache.commons.net.ftp.FTPClient;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
public class FTPDownloadDemo {
public static void main(String[] args) {
// The local filename and remote filename to be downloaded.
String filename = "data.txt";
FTPClient client = new FTPClient();
try (OutputStream os = new FileOutputStream(filename)) {
client.connect("ftp.example.org");
client.login("admin", "admin123**");
// Download file from FTP server.
boolean status = client.retrieveFile(filename, os);
System.out.println("status = " + status);
System.out.println("reply = " + client.getReplyString());
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
client.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
If the download process was success you will see the following output printed:
status = true
reply = 226 Transfer complete.
Maven Dependencies
<!-- http://repo1.maven.org/maven2/commons-net/commons-net/3.6/commons-net-3.6.jar -->
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.6</version>
</dependency>
Latest posts by Wayan (see all)
- How do I install Calibri font in Ubuntu? - January 24, 2021
- How do I create a generic class in Java? - January 1, 2021
- How do I convert java.util.TimeZone to java.time.ZoneId? - April 25, 2020
But how can I choose the path that the file will be downloaded at?
The download path can be defined in the
FileOutputStream
object. You can pass a string with a full path or you can createFile
object that define the full path where the download file will be stored.I tried the code but my app has stopped 🙁 The changes that I made with the code are: with the server name and login user as well as the directory for the file in the server.
When i call this class in the
mainActivity
what should I send? I call it in mymainActivity
like this:Can you help me?
Hi Mona,
Can you show me the full code on how you integrate the code in the example above in your Android app? Maybe you can post the code in Pastebin.com.
java.lang.NoClassDefFoundError: org/apache/commons/net/ftp/FTPClient
You need the Apache Commons Net library to compile and run the example.
I’m downloading File to a specific directory, but the file comes empty.
Hi Victor,
Try to get the download status and the reply code from the FTP server by adding the following code. This will show if the download process success or failed.