luisjosediez.Ejercicio2.java Source code

Java tutorial

Introduction

Here is the source code for luisjosediez.Ejercicio2.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package luisjosediez;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;

/**
 *
 * @author stdeceiver
 */
public class Ejercicio2 {

    // Mtodos de entrada de teclado
    static String inicializar() {

        String buzon = "";
        InputStreamReader flujo = new InputStreamReader(System.in);
        BufferedReader teclado = new BufferedReader(flujo);
        try {
            buzon = teclado.readLine();
        } catch (Exception e) {
            System.out.append("Entrada incorrecta");
        }
        return buzon;

    }

    public static String cadena() {

        String valor = inicializar();
        return valor;

    }

    public static void ls() {

    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        System.out.println("Introduce la direccin de un servidor ftp: ");
        FTPClient cliente = new FTPClient();
        String servFTP = cadena();
        String clave = "";
        System.out.println("Introduce usuario (vaco para conexin annima): ");
        String usuario = cadena();
        String opcion;
        if (usuario.equals("")) {
            clave = "";
        } else {
            System.out.println("Introduce contrasea: ");
            clave = cadena();
        }
        try {
            cliente.setPassiveNatWorkaround(false);
            cliente.connect(servFTP, 21);
            boolean login = cliente.login(usuario, clave);
            if (login) {
                System.out.println("Conexin ok");
            } else {
                System.out.println("Login incorrecto");
                cliente.disconnect();
                System.exit(1);
            }
            do {

                System.out.println("Orden [exit para salir]: ");
                opcion = cadena();
                if (opcion.equals("ls")) {
                    FTPFile[] files = cliente.listFiles();
                    String tipos[] = { "Fichero", "Directorio", "Enlace" };
                    for (int i = 0; i < files.length; i++) {
                        System.out.println("\t" + files[i].getName() + "\t=> " + tipos[files[i].getType()]);
                    }
                } else if (opcion.startsWith("cd ")) {
                    try {
                        cliente.changeWorkingDirectory(opcion.substring(3));
                    } catch (IOException e) {
                    }
                } else if (opcion.equals("help")) {
                    System.out.println(
                            "Puede ejecutar los comandos 'exit', 'ls', 'cd', 'get' y 'upload'. Para ms detalles utilice 'help <comando>'.");
                } else if (opcion.startsWith("help ")) {
                    if (opcion.endsWith(" get")) {
                        System.out.println(
                                "Permite descargar un archivo concreto. Uso: 'get <rutaArchivoADescargar>'.");
                    } else if (opcion.endsWith(" ls")) {
                        System.out.println("Lista los ficheros y directorios en la ubicacin actual. Uso: 'ls'.");
                    } else if (opcion.endsWith(" cd")) {
                        System.out.println("Permite cambiar la ubicacin actual. Uso: 'cd <rutaDestino>'.");
                    } else if (opcion.endsWith(" put")) {
                        System.out.println(
                                "Permite subir un archivo al directorio actual. Uso: 'put <rutaArchivoASubir>'.");
                    }
                } else if (opcion.startsWith("get ")) {
                    try {
                        System.out.println("Indique la carpeta de descarga: ");
                        try (FileOutputStream fos = new FileOutputStream(cadena() + opcion.substring(4))) {
                            cliente.retrieveFile(opcion.substring(4), fos);
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    } catch (Exception e) {
                    }
                } else if (opcion.startsWith("put ")) {
                    try {
                        try {

                            System.out.println(opcion.substring(4));

                            File local = new File(opcion.substring(4));

                            System.out.println(local.getName());

                            InputStream is = new FileInputStream(opcion.substring(4));

                            OutputStream os = cliente.storeFileStream(local.getName());

                            byte[] bytesIn = new byte[4096];

                            int read = 0;

                            while ((read = is.read(bytesIn)) != -1) {

                                os.write(bytesIn, 0, read);

                            }

                            is.close();
                            os.close();

                            boolean completed = cliente.completePendingCommand();

                            if (completed) {
                                System.out.println("The file is uploaded successfully.");
                            }

                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    } catch (Exception e) {
                    }
                }

            } while (!(opcion.equals("exit")));

            boolean logout = cliente.logout();
            if (logout)
                System.out.println("Logout...");
            else
                System.out.println("Logout incorrecto");

            cliente.disconnect();

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}