style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

Pequeña aplicación para crear un cliente FTP en commons net

/* Que tal compañeros del foro bueno pues ya tenía rato que no entraba y me di cuenta que mi post se eliminó por una extraña razón y tenía ya un código puesto, el cual vuelvo a subir para saber si alguien sabe como añadir un arbol directorios para crear por completo el cliente ftp, lo que tengo es un pequeño ejemplo pero que añadiendole esa clase de arbol directorios funcionará perfectamente, bueno de antemano gracias compañeros aquí está mi código para el cliente FTP*/

package prueba_botones;

import java.io.File;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import javax.swing.*;
import org.apache.commons.net.ftp.FTPClient;

public class Boton_java extends JFrame implements ActionListener
{
   private JButton boton1,boton2,boton3,boton4,boton5;
   
   private JLabel usuario,servidor,pass;
   
   private JTextField users,servi;
   
   private JPasswordField contra;
   
   private JTextArea consola;
   
   FTPClient ftpcliente;
 
   public Boton_java(){
       
       ftpcliente = new FTPClient();
       setLayout(null);
       boton1 = new JButton("UPLOAD");
       boton1.setBounds(10,100,100,30);
       add(boton1);
       boton1.addActionListener(this);
       boton2 = new JButton("BORRAR");
       boton2.setBounds(110,100,100,30);
       add(boton2);
       boton2.addActionListener(this);
       boton3 = new JButton("LISTAR");
       boton3.setBounds(210,100,100,30);
       add(boton3);
       boton3.addActionListener(this);
       boton4 = new JButton("FINALIZAR");
       boton4.setBounds(310,100,100,30);
       add(boton4);
       boton4.addActionListener(this);
       boton5 = new JButton("CONECTAR");
       boton5.setBounds(410,100,100,30);
       add(boton5);
       boton5.addActionListener(this);
       usuario = new JLabel("USUARIO");
       usuario.setBounds(10,20,90,30);
       add(usuario);
       servidor = new JLabel("SERVIDOR");
       servidor.setBounds(110,20,90,30);
       add(servidor);
       pass = new JLabel("CONTRASEÑA");
       pass.setBounds(210,20,90,30);
       add(pass);
       users = new JTextField(10);  
       users.setBounds(10,50,90,30);
       add(users);
       servi = new JTextField(10);
       servi.setBounds(110,50,90,30);
       add(servi);
       contra = new JPasswordField(10);
       contra.setBounds(210,50,90,30);
       add(contra);
       consola = new JTextArea();//Área de texto
       consola.setBounds(10,150,500,100);
       add(consola);
   }
    @Override
   public void actionPerformed(ActionEvent e){
       
        if(e.getSource()==boton1){
           
           setTitle("UPLOAD");//Acción en el JFrame
         
           int replay = ftpcliente.getReplyCode();
           if(FTPReply.isPositiveCompletion(replay)){
               FileInputStream input = null;
               try {
                   File file = new File("D://imagen.jpg");
                   input = new FileInputStream(file);
                   try {
                       ftpcliente.setFileType(FTP.BINARY_FILE_TYPE);
                       ftpcliente.storeFile(file.getName(),input);
                   } catch (IOException ex) {
                       Logger.getLogger(Boton_java.class.getName()).log(Level.SEVERE, null, ex);
                   }
         
                    ftpcliente.enterLocalPassiveMode();
                    consola.append("Subió Satisfactoriamente el archivo\n");
                    System.out.println("Subió satisfactoriamente el archivo\n");
                   
               } catch (FileNotFoundException ex) {
                   Logger.getLogger(Boton_java.class.getName()).log(Level.SEVERE, null, ex);
               } finally {
                   try {
                       input.close();
                   } catch (IOException ex) {
                       Logger.getLogger(Boton_java.class.getName()).log(Level.SEVERE, null, ex);
                   }
               }
           }
           else{
               consola.append("No se pudo subir el archivo verifica que estás conectado\n");
               System.out.println("No se pudo subir el archivo verifica que estás conectado\n");
           }
       }
       if(e.getSource()==boton2){
           
           setTitle("BORRAR");
           
           int replay = ftpcliente.getReplyCode();
           if(FTPReply.isPositiveCompletion(replay)){  
           try {
               boolean deleted = ftpcliente.deleteFile("el archivo_con_ruta_estatica.txt");
               if(deleted){
                   consola.append("Se borró el archivo\n");
                   System.out.println("Se borró el archivo\n");
               }
               else{
                   consola.append("No se pudo borrar el archivo\n");
                   System.out.println("No se pudo borrar el archivo\n");
               }
                   
           } catch (IOException ex) {
               Logger.getLogger(Boton_java.class.getName()).log(Level.SEVERE, null, ex);
           }
           }
           else{
               consola.append("No se pudo borrar el archivo verifica que estás conectado al servidor\n");
               System.out.println("No se pudo borrar el archivo verifica que estás conectado al servidor\n");
           }
           }
       if(e.getSource()==boton3){
           
           setTitle("LISTAR");//Acción en el JFrame
           
           int replay = ftpcliente.getReplyCode();
           if(FTPReply.isPositiveCompletion(replay)){
               try {
                   for (FTPFile file : ftpcliente.listFiles()) {
                            System.out.printf("%s %s [%d bytes]\n" ,(file.isDirectory() ? "[D]" : "   "),
    file.getName(), file.getSize());
                    }
                   consola.append("Listado de archivos y carpetas del servidor\n");
               } catch (IOException ex) {
                   Logger.getLogger(Boton_java.class.getName()).log(Level.SEVERE, null, ex);
               }
               
           }else{
               consola.append("No puedes listar archivos, inicia sesión primero\n");
               System.out.println("No puedes listar archivos, inicia sesión primero\n");
           }
       }
       if(e.getSource()==boton4){
           try {
               ftpcliente.disconnect();
           } catch (IOException ex) {
               Logger.getLogger(Boton_java.class.getName()).log(Level.SEVERE, null, ex);
           }
           consola.append("Se finalizó satisfactoriamente la aplicación\n");
           consola.append("Te haz desconectado satisfactoriamente del servidor\n");
           System.out.println("Se finalizó satisfactoriamente la aplicación\n");
           System.out.println("Te haz desconectado satisfactoriamente del servidor\n");
           System.exit(0);
       }
       if(e.getSource()==boton5){
           
               setTitle("CONECTAR"); //Accion en el JFrame
               
               ftpcliente = new FTPClient();
               try {
                   ftpcliente.connect(servi.getText());
                   if(ftpcliente.login(users.getText(), new String(contra.getPassword()))){
                       consola.append("Conectado con el servidor\n");
                       System.out.println("Conectado con el servidor\n");
                   }
                   else
                   {
                       consola.append("No te has podido conectar, inicia sesión primero\n");
                       System.out.println("No te has podido conectar, inicia sesión primero\n");
                   }        
               }
               catch(IOException ex)
               {
                   System.err.println(ex.getMessage());
               }
       }
   }
    public static void main(String[] args) {
        Boton_java formulario1 = new Boton_java();
        formulario1.setBounds(0,0,550,300);
        formulario1.setVisible(true);//Habilitar formulario
        formulario1.setLocationRelativeTo(null);
        formulario1.setDefaultCloseOperation(EXIT_ON_CLOSE);
    }
}

/*Lo que quiero que enlace es esta clase, para que al presionar el botón conectar aparezca dicha clase donde enviará a la clase arbol_directorios. Mi clase arbol_directorios es la siguiente. De antemano gracias compañeros, los comentarios que quedaron en el otro post donde ya había subido el código que tengo arriba y no vi si existian comentarios de colaboración, de cualquier forma aquí esta el código, no soy muy bueno en java apenas y estoy iniciando, pero creo que cualquier aporte es bueno para apoyar a todos los que visitan o se inscriban en el foro */

package arbol;
import java.io.File;
import javax.swing.*;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeCellRenderer;

public class Arbol_directorios extends JFrame {
   
    JTree explorador;
    DefaultMutableTreeNode Raiz;
   
    public Arbol_directorios(){
       
        Raiz = new DefaultMutableTreeNode("Raíz");
        explorador = new JTree(Raiz);
        DefaultTreeCellRenderer render  = (DefaultTreeCellRenderer)explorador.getCellRenderer();
        render.setLeafIcon(new ImageIcon(this.getClass().getResource("/lib/archivo.png")));
        render.setOpenIcon(new ImageIcon(this.getClass().getResource("/lib/carpeta.png")));
        render.setClosedIcon(new ImageIcon(this.getClass().getResource("/lib/carpeta.png")));
        explorador.addTreeSelectionListener(new TreeSelectionListener(){

            @Override
            public void valueChanged(TreeSelectionEvent e)
            {
                try{
                        DefaultMutableTreeNode sel = (DefaultMutableTreeNode)explorador.getLastSelectedPathComponent();
                        //agregarHijos(sel);
                        for(int i=0;i<sel.getChildCount();i++){
                            DefaultMutableTreeNode nieto=(DefaultMutableTreeNode)sel.getChildAt(i);
                            File fhijo = obtenerRuta(sel);
                            agregarHijos(nieto);
                        }
                    }catch(NullPointerException npe){
                    }
            }
        });
                for(int i=0;i<File.listRoots().length;i++){
                    DefaultMutableTreeNode hijo = new DefaultMutableTreeNode(File.listRoots()[i]);
                    Raiz.add(hijo);
                }
                add(new JScrollPane(explorador));
    }
        public void agregarHijos(DefaultMutableTreeNode padre) throws NullPointerException{
            if(padre!=Raiz){
                File fpadre=obtenerRuta(padre);
                if(fpadre.isDirectory()){
                    for(int i=0;i<fpadre.list().length;i++){
                        DefaultMutableTreeNode hijo=new DefaultMutableTreeNode(fpadre.list()[i]);
                        padre.add(hijo);
                    }
                }
            }
        }
            public File obtenerRuta(DefaultMutableTreeNode a){
            String ruta="";
            for(int i=0;i<a.getPath().length-1;i++){
                ruta=ruta+a.getPath()[i+1]+"\\";
            }
            File f=new File(ruta);
            return f;
        }
        public static void main(String[] args) {
        Arbol_directorios a = new Arbol_directorios();
        a.setVisible(true);
        a.setBounds(0, 0, 400, 400);
        a.setDefaultCloseOperation(EXIT_ON_CLOSE);
    }
}

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de lalo200

Bueno casi por completo

Casi por completo pero si una pequeña parte de lo que será el cliente ftp, de antemano gracias, hasta luego compañeros.

Imagen de lalo200

Algun aporte??????

Algún aporte para hacer mejor la aplicación o no sé recomendación, se aceptan críticas, obviamente que sean constructivas, sé que la aplicación no es la gran cosa pero si ayuda un poco como ejemplo.

Imagen de neko069

Sugerencia...

Pues así a primera vista, la única sugerencia que veo, es que en lugar de usar un archivo en ruta estática (tu archivo de imagen al principio de tú código) coloques un JFileChooser para que se pueda elegir cualquier archivo :-)

Imagen de lalo200

Excelente compañero

Gracias compañero neko069, por tu colaboración :D

Imagen de lalo200

Se podría cambiar?

Que tal compañeros, una duda de que manera puedes cambiar al contructor para que no dependa del tan mencionado"this" en esta aplicación. :S

Imagen de lalo200

Duda??????? :(

Duda compañeros agregué código para con el JFileChooser, el detalle que no se como cachar el valor de la variable del JFileChooser para ponerlo en la acción del boton de subir y borrar archivo, por que tiene mucho que ver con el fileinputsream, no sé ni como hacerle la verdad, pongo el código del JFileChooser:

JFileChooser fileChooser = new JFileChooser();
int returnValue = fileChooser.showOpenDialog(null);// Nos retorna un entero
// Si apretamos en aceptar un archive ocurrira esto
if (returnValue == JFileChooser.APPROVE_OPTION) {
File selectedFile = fileChooser.getSelectedFile();
System.out.println(selectedFile.getName());
}

Hasta luego compañeros y gracias.

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">