Java FTP Source Code Published: August 1, 2007 PrintEmail
File Transfer Protocol is the protocol for exchanging files over the Internet. FTP works in the same way as HTTP for transferring Web pages from a server to a user's browser and SMTP for transferring electronic mail across the Internet in that, like these technologies, FTP uses the Internet's TCP/IP protocols to enable data transfer. The simplest way to access an FTP site is to use a SimpleFTP which is the a simple Java FTP client package. You can download it Here
try { SimpleFTP ftp = new SimpleFTP();
// Connect to an FTP server on port 21. ftp.connect("ftp.somewhere.net", 21, "username", "password");
// Set binary mode. ftp.bin();
// Change to a new working directory on the FTP server. ftp.cwd("web");
// Upload some files. ftp.stor(new File("webcam.jpg")); ftp.stor(new File("comicbot-latest.png"));
// You can also upload from an InputStream, e.g. ftp.stor(new FileInputStream(new File("test.png")), "test.png"); ftp.stor(someSocket.getInputStream(), "blah.dat");
// Quit from the FTP server. ftp.disconnect(); } catch (IOException e) { }
The most attractive option for FTP functionality in Java is the Jakarta Commons Net library, which implements the client side of many basic Internet protocols.
/*** * This is an example program demonstrating how to use the FTPClient class. * This program connects to an FTP server and retrieves the specified * file. If the -s flag is used, it stores the local file at the FTP server. * Just so you can see what's happening, all reply strings are printed. * If the -b flag is used, a binary transfer is assumed (default is ASCII). *
* Usage: ftp [-s] [-b] *
***/ public final class ftp {
public static final String USAGE = "Usage: ftp [-s] [-b] \n" + "\nDefault behavior is to download a file and use ASCII transfer mode.\n" + "\t-s store file on server (upload)\n" + "\t-b use binary transfer mode\n";
public static final void main(String[] args) { int base = 0; boolean storeFile = false, binaryTransfer = false, error = false; String server, username, password, remote, local; FTPClient ftp;
for (base = 0; base < args.length; base++) { if (args[base].startsWith("-s")) storeFile = true; else if (args[base].startsWith("-b")) binaryTransfer = true; else break; }
if ((args.length - base) != 5) { System.err.println(USAGE); System.exit(1); }
server = args[base++]; username = args[base++]; password = args[base++]; remote = args[base++]; local = args[base];
If you have some budget, you can consider Secure FTP Factory which has components for secure file transfer protocols including FTPS (FTP over SSL both implicit and explicit modes), SFTP (FTP over SSH) and SCP (Secure Copy via SSH).