import java.io.*;
import java.net.*;
import org.apache.commons.net.ftp.*;

// Ojo al cortafuegos, que tiene que abrir los puertos FTP


public class clienteFTP3{
    public static void main(String args[]){
        try{
            // Datos para la conexion
            String servFTP="www.v-espino.com";
            String usuario="XXXX";
            String clave="YYYY";
            System.out.print("Conectando con "+servFTP+"...");
            
            // Conectamos
            FTPClient cliente=new FTPClient();
            cliente.connect(servFTP);
            System.out.println("conectado");
            
            // Nos identificamos
            boolean login=cliente.login(usuario,clave);
            if(login) System.out.println("usuario y contraseña correctos");
            else{
                System.out.println("login incorrecto");
                cliente.disconnect();
                System.exit(1);
            }
            
            // A ver donde estoy
            System.out.println("Directorio actual: "+cliente.printWorkingDirectory());
            
            // Cambio de directorio
            cliente.changeWorkingDirectory("public_html");
            System.out.println("Directorio actual: "+cliente.printWorkingDirectory());
            
            // Creo un directorio nuevo y entro en el
            cliente.makeDirectory("dam2");
            cliente.changeWorkingDirectory("dam2");
            System.out.println("Directorio actual: "+cliente.printWorkingDirectory());
            
            // Subamos un fichero
            cliente.setFileType(FTP.BINARY_FILE_TYPE);
            FileInputStream fis=new FileInputStream("twitter.txt");
            BufferedInputStream bis =new BufferedInputStream(fis);
            cliente.storeFile("subido.txt",bis);
            bis.close();
            fis.close();
            
            // Renombrar un fichero (devuelve TRUE si lo renombra)
            cliente.rename("subido.txt","cambiado.txt");
            
            // Descargar un fichero
            FileOutputStream fos=new FileOutputStream("mangado.txt");
            BufferedOutputStream bos =new BufferedOutputStream(fos);
            cliente.retrieveFile("cambiado.txt",bos);
            bos.close();
            fos.close();
            
            // Borrar un fichero (devuelve TRUE si lo borra)
            cliente.deleteFile("cambiado.txt");
            
            // Recogemos los ficheros via FTP
            FTPFile[] ficheros=cliente.listFiles();
            System.out.println("Ficheros en el directorio actual: "+ficheros.length);
            String tipos[]={"Fichero","Directorio","Enlace"};
            for(int i=0;i<ficheros.length;i++){
                System.out.println("\t"+ficheros[i].getName()+" => "+tipos[ficheros[i].getType()]+" - "+ficheros[i].getUser());
            }
            
            // Despidiendo de forma educada
            cliente.logout();
            cliente.disconnect();
            System.out.println("Desconectado");
        }catch(Exception e){
            System.out.println("ERROR");
            e.printStackTrace();
        }
    }

}
