Here’s a sample code on setting up FTPS file transfer in Java. Make sure you have setup SSLContext trusting the FTPS server’s certificate.
SSLContext sslContext = /* setup SSLContext */
FTPSClient ftps = new FTPSClient(true, sslContext);
ftps.connect(hostname, port);
// Timeout exception will be raised if no response received after 20s
ftps.setDataTimeout(20000);
// Authenticate
ftps.user("ftp_user")
ret = ftps.pass("ftp_pass");
// Define protection buffer size and protocol. Following are the default for implicit FTP (FTPS)
ftps.parsePBSZ(0);
ftps.execPROT("P");
// Set passive mode and file transfer type
ftps.type(FTP.BINARY_FILE_TYPE);
ftps.enterLocalPassiveMode();
// Remote path where file will be downloaded from
ftps.changeWorkingDirectory("/remote/path");
// Retrieve a file called "file.txt" from remote server
FileOutputStream local = new FileOutputStream("file.txt");
ftps.retrieveFile("file.txt", local);
This code uses commons-net package, make sure it is included in maven dependencies:
commons-net commons-net 3.3
The actual FTPS code will vary greatly depending on your FTPS server setup. The above assumes FTPS server is running in passive mode with normal username / password authentication.