Method | List files? | List directories? | List in current working directory? | List in a specified directory? |
listDirectories() | No | Yes | Yes | No |
listDirectories(String parent) | No | Yes | No | Yes |
listFiles() | Yes | Yes | Yes | No |
listFiles(String pathname) | Yes | Yes | No | Yes |
FTPClient ftpClient = new FTPClient(); ftpClient.connect(server, port); ftpClient.login(user, pass); // lists files and directories in the current working directory FTPFile[] files = ftpClient.listFiles(); // iterates over the files and prints details for each DateFormat dateFormater = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); for (FTPFile file : files) { String details = file.getName(); if (file.isDirectory()) { details = "[" + details + "]"; } details += "\t\t" + file.getSize(); details += "\t\t" + dateFormater.format(file.getTimestamp().getTime()); System.out.println(details); } ftpClient.logout(); ftpClient.disconnect();You can try to use other methods for experimenting yourself:
FTPFile[] files = ftpClient.listFiles("/document"); FTPFile[] files = ftpClient.listDirectories("/images"); FTPFile[] files = ftpClient.listDirectories();The following code snippet demonstrates usage of listNamesmethod:
String[] files = ftpClient.listNames(); if (files != null && files.length > 0) { for (String aFile: files) { System.out.println(aFile); } }
import java.io.IOException; import java.text.DateFormat; import java.text.SimpleDateFormat; import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPFile; import org.apache.commons.net.ftp.FTPReply; /** * An example program that demonstrates how to list files and directories * on a FTP server using Apache Commons Net API. * @author www.codejava.net */ public class FTPListDemo { public static void main(String[] args) { String server = "www.ftpserver.com"; int port = 21; String user = "username"; String pass = "password"; FTPClient ftpClient = new FTPClient(); try { ftpClient.connect(server, port); showServerReply(ftpClient); int replyCode = ftpClient.getReplyCode(); if (!FTPReply.isPositiveCompletion(replyCode)) { System.out.println("Connect failed"); return; } boolean success = ftpClient.login(user, pass); showServerReply(ftpClient); if (!success) { System.out.println("Could not login to the server"); return; } // Lists files and directories FTPFile[] files1 = ftpClient.listFiles("/public_ftp"); printFileDetails(files1); // uses simpler methods String[] files2 = ftpClient.listNames(); printNames(files2); } catch (IOException ex) { System.out.println("Oops! Something wrong happened"); ex.printStackTrace(); } finally { // logs out and disconnects from server try { if (ftpClient.isConnected()) { ftpClient.logout(); ftpClient.disconnect(); } } catch (IOException ex) { ex.printStackTrace(); } } } private static void printFileDetails(FTPFile[] files) { DateFormat dateFormater = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); for (FTPFile file : files) { String details = file.getName(); if (file.isDirectory()) { details = "[" + details + "]"; } details += "\t\t" + file.getSize(); details += "\t\t" + dateFormater.format(file.getTimestamp().getTime()); System.out.println(details); } } private static void printNames(String files[]) { if (files != null && files.length > 0) { for (String aFile: files) { System.out.println(aFile); } } } private static void showServerReply(FTPClient ftpClient) { String[] replies = ftpClient.getReplyStrings(); if (replies != null && replies.length > 0) { for (String aReply : replies) { System.out.println("SERVER: " + aReply); } } } }Screenshot of compile and run the program under Windows: