martes 13 de enero de 2009

Acceder a un Ftp con jakarta commons-net

El proyecto jakarta commons-net nos proporciona implementaciones protocolos de Internet en java para poder utilizarlos en el lado del cliente. Los protocolos que soporta son los siguientes:
  • FTP/FTPS
  • NNTP
  • SMTP
  • POP3
  • Telnet
  • TFTP
  • Finger
  • Whois
  • rexec/rcmd/rlogin
  • Time (rdate) and Daytime
  • Echo
  • Discard
  • NTP/SNTP

En este ejemplo veremos como acceder a un ftp con esta libreria

Para usarlo tenemos que descargar los siguientes jar de la pagina oficial:

- commons-net-1.4.1.jar
- jakarta-oro-2.0.8.jar


El primer jar nos proporciona las clases que implementan los protocolos antes mencionados y en el segundo jar contiene algunas clases para evaluar expresiones. El primero usa clases del segundo por lo cual necesitamos agregar ambos a nuestro classpath.

Aquí tenemos el ejemplo :

import java.io.IOException;
import java.net.SocketException;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPClientConfig;
import org.apache.commons.net.ftp.FTPFile;

public class Main {
public static void main(String[] args) {
FTPClient f = new FTPClient();
try {
FTPClientConfig conf = new FTPClientConfig(FTPClientConfig.SYST_UNIX); //Este objeto nos
f.configure(conf); //permite configurar opciones de conexion como idioma y sistema de archivos
f.connect("127.0.0.1"); // ip del servidor ftp
f.login("usuario", "usuario"); // usuario y password para conectarnos al ftp
f.changeWorkingDirectory("diruno"); // Cambiamos de la raiz al subdirectorio uno
System.out.println(" Crea directorio ? "+f.mkd("dirprueba")); //crea un directorio en diruno
FTPFile[] files = f.listFiles(); // Obtiene los archivos del servidor y los mostramos
System.out.println(f.isConnected());
for (FTPFile arch : files){
System.out.println(arch.toString());
}
f.disconnect();
System.out.println(f.isConnected());
} catch (IOException ex) {
ex.printStackTrace();
}
}
}

Les dejo el link de la pagina oficial http://commons.apache.org/net/

2 comentarios:

javinho dijo...

hola amigos tengo un pequeño problema,

me puedo conectar muy bien al servidor ftp(que esta en linux), pero cuando trato de hacer
FTPFile[] files = ftp.listFiles();

para traer la lista de archivos...

no puedo extraerlos despues...

pero mientras que en windows si podia..

alquien me puede ayudar

pueden escribirme a cocketo24@yahoo.es o Diego_e_guerra@hotmail.com

no name dijo...

hola amigo

mr el problema es que cuando el ftp esta en la red local, puedo ver los archivos q contiene el ftp
por ejemplo si le colocamos la direccion 192.....etc es red local

pero si le colocamos un ip publico al mismo ftp, puedo copiar, borrar, crear carpetas pero cuando FTPFile[] files = ftp.listFiles(); para ver los archivos q contiene alguna carpeta no puedo verlos?

me podia ayudar porfavor

me escribe a diego.guerra@sisa.com

slds