Listare file ricorsivamente da FTP in Java
Di Java e FTP ne abbiamo già parlato, ma solo lato upload.
Oggi vediamo come connetterci a un server FTP e listare in maniera ricorsiva tutti i file.
In pratica otterremo la lista di tutti i file, compresi quelli delle sottodirectory.
Prima di tutto scarichiamo la libreria Apache Commens Net e aggiungiamola al nostro progetto.
A questo punto creiamo la nostra classe per la connessione:
public class FtpConnection {
private final FTPClient ftp;
private ArrayList list;
public FtpConnection() throws IOException {
list = new ArrayList<>();
ftp = new FTPClient();
ftp.connect("HOST");
ftp.login("USER", "PWD");
}
public void getFileList(String dir) throws IOException {
FTPFile[] elementi = ftp.listFiles(dir);
for (FTPFile f : elementi) {
if (f.getName().equals(".") || f.getName().equals("..")) {
continue;
}
if (f.isDirectory()) {
String currentDir = dir + "/" + f.getName();
getFileList(currentDir);
} else {
list.add(dir + "/" + f.getName());
}
}
}
public ArrayList getList() {
return list;
}
public void doDisconnection() throws IOException {
ftp.disconnect();
}
}
In verità non c'è molto da dire.
Nel costruttore eseguiamo la connessione e il login usando le funzioni connect e login.
Nel metodo getFileList eseguiamo la scansione dei file in maniera ricorsiva; il metodo richiede un parametro che è la directory di partenza.
Per richiamare il tutto ci basta questo:
try {
FtpConnection ftp = new FtpConnection();
ftp.getFileList("Volume_1");
ArrayList list = ftp.getList();
String[] films = list.toArray(new String[list.size()]);
for (String s : films) {
System.out.println(s);
}
ftp.doDisconnection();
} catch (IOException ex) {
JOptionPane.showMessageDialog(null, ex.getMessage());
}
Enjoy!
java ftp apache apache commons ftpconnection connect login
Commentami!