Artículos
Java

Copiar directorio con Java

Creado: 13/Sep/2011 Actualizado: 29/Dic/2014

Con el siguiente código vamos a ver como podemos copiar el contenido de un directorio en otro utilizando el lenguaje Java.

Para poder copiar directorio con Java lo primero será entender la idea de cómo resolver el problema de la copia de directorios con Java. La cuestión es que no podemos ejecutar una copia tal cual del directorio ya que dicho directorio puede albergar contenido. Además dicho contenido puede ser a su vez otro directorio con más contenido.

Con esto vemos que lo que necesitamos es hacer un programa Java recursivo que vaya recorriendo cada directorio y copiando todo su contenido de uno a otro.

Lo primero será definir el interface de nuestro método que sirve para copiar directorios.

public static void copiarDirectorios(File d1, File d2){...}

El método controlará la recursividad comprobando si el fichero que llega en primer lugar es un directorio, ya que si no lo es asumirá que es un fichero y procederá a su copia.

Es decir, la estructura del programa Java quedará de la siguiente forma:

public static void copiarDirectorios(File d1, File d2){
  if (d1.isDirectory()){
    // Recorremos recursivamente el directorio
  else
    // Copiamos d1 a d2, ya que serán ficheros
  }
}

La parte de cómo se copia un fichero en otro la explicamos en el ejemplo de Copiar ficheros con Java.

Si bien pegamos aquí el código Java para que quede como referencia:

public static void copiarFicheros(File f1, File f2){
                
  try {
    InputStream in = new FileInputStream(f1);
    OutputStream out = new FileOutputStream(f2);
                                
    byte[] buf = new byte[1024];
    int len;

    while ((len = in.read(buf)) > 0) {
      out.write(buf, 0, len);
    }
                
    in.close();
    out.close();
                       
  } catch (IOException ioe){
    ioe.printStackTrace();
  }
}

Ahora pasamos a recorrer el contenido del directorio. Lo primero que tenemos que hacer es la creación del directorio destino. Eso sí, si el directorio no existe. Aquí jugamos con el método .exits() para ver si existe el directorio y .mkdir() para ayudarnos a crear el directorio.

if (!d2.exists()){                              
  d2.mkdir();
  System.out.println("Creando directorio " + d2.toString());
}

Una vez creado el directorio destino recorremos el directorio origen y procedemos a la copia. Hay que recordar que la lista de ficheros que contiene un directorio nos la proporciona el método .list(). Dicho método nos devuelve un array de String, el cual recorreremos.

String[] ficheros = d1.list();
for (int x=0;x

Por cada fichero volvemos a llamar a nuestro método copiarDirectorios de forma recursiva. Si lo que le pasamos es un directorio volverá a realizar la misma operación. Si lo que le pasamos son ficheros, directamente los copiará.

Espero que os haya gustado el ejemplo de cómo copiar directorio con Java.

Vídeos sobre Java

Disfruta también de nuestros artículos sobre Java en formato vídeo. Aprovecha y suscribete a nuestro canal.

Test Java

¿Te atreves a probar tus habilidades y conocimiento en Java con nuestro test?

Test Java
Artículos
Java

Conectarse a un FTP con Java

Creado: 07/Sep/2011 Actualizado: 29/Dic/2014

La posibilidad de contectarse a un FTP con Java no es una utilidad que nos den las librerías base de Java. Es por ello que para poder acometer esta tarea y conectarnos a un FTP con Java deberemos de utilizar las librerías de Apache Commons. En concreto el componente Net.

Así que lo primero que hay que hacer para pode crear nuestro programa que se conecte a un FTP con Java es decargarnos la librería Net de Apache Commons.

En nuestro código fuente deberemos de realizar un import de esta librería:

import org.apache.commons.net.ftp.FTPClient;

La clase de Apache Commons que nos permitirá crear un cliente FTP con Java es FTPClient. Por lo tanto la primera línea de nuestro programa creará una instancia de esta clase.

FTPClient client = new FTPClient();

Una vez creado el cliente deberemos de conocer tres cosas para poder conectarnos a un FTP con Java. Estas serán:

  • Servidor FTP
  • Usuario
  • Password

Estos datos los utilizaremos en el método .connect y .login del cliente FTP

String sFTP = "ftp.miservidor.com";
String sUser = "usuario";
String sPassword = "password";
		
try {
  client.connect(sFTP);
  boolean login = client.login(sUser,sPassword);
} catch (IOException ioe) {}

Cuando hagamos el login para conectarnos al FTP, este devolverá en un valor booleano si se ha podido conectar o no. Si todo va correctamente ya estaremos conectados.

Una vez que hagamos la operativa que necesitemos con el FTP (lo veremos en otros artículos sobre FTP y Java) deberemos de desconectarnos del FTP.

Para desconectarnos del FTP haremos dos cosas. En primer lugar haremos un logout del usuario y luego nos desconectaremos del servidor. Los método .logout() y .disconnect() nos ayudarán en esta tarea.

client.logout();
client.disconnect();

Ya tendremos todo nuestro código para conectarse (y desconectarse a un FTP con Java).

Hay que tener en cuenta que todo el proceso de conexión al FTP puede generar una excepción IOException. Es por ello que deberemos de tomar las medidas necesarias en una estuctura try-catch.

Vídeos sobre Java

Disfruta también de nuestros artículos sobre Java en formato vídeo. Aprovecha y suscribete a nuestro canal.

Test Java

¿Te atreves a probar tus habilidades y conocimiento en Java con nuestro test?

Test Java