Saltar al contenido
Portada » Copiar Ficheros en Java

Copiar Ficheros en Java

Hasta que llegó Java 7 no implementaron un método para copiar ficheros en Java específico. Hasta ese momento las opciones eran o bien escribirlo directamente usando un FileInputStream, FileOutStream y un buffer, o bien usar el método FileChannel.transferTo() o el FileUtils de Apache Commons.

A día de hoy tenemos un método nativo de Java para copiar ficheros. Revisaremos varias opciones en los puntos siguientes.

Copiar fichero en Java usando Streams

El primer paso en la copia del fichero en Java es abrir un stream de lectura, un InputStream sobre el fichero origen. Al mismo tiempo abriremos un stream de escritura sobre el fichero de destino, un OutputStream. Sobre el OutputStream realizaremos la escritura de los bytes que vayamos leyendo.

    public boolean copiarFichero(String desde, String hasta) {
        File ficheroOrigen = new File(desde);
        File ficheroDestino= new File(hasta);

        if (ficheroOrigen .exists()) {
            try {
                InputStream input= new FileInputStream(ficheroOrigen );
                OutputStream output = new FileOutputStream(ficheroDestino);
                
                byte[] buffer = new byte[1024];
                int longitud;
                while ((longitud= input.read(buffer )) > 0) {
                    output.write(buffer , 0, longitud);
                }
                input.close();
                output.close();
                return true;
            } 
              catch (IOException e)
              {
                e.printStackTrace();
                return false;
            }
        } else {
            return false;
        }
    }

Copiar en Java Usando Apache Commons IO

El método que usaremos de la librería es el siguiente:

 FileUtils.copyFile(File source, File destination)

El método copia un fichero a una nueva ubicación preservando el timestamp. El directorio destino se crea si no existe. Si el fichero ya existía en el destino, será sobrescrito. Aquí podemos ver un ejemplo:

import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;

public class DemoCopiaFichero
{
    public static void main(String args[]) 
{ 

        File ficheroOrigen = new File("bin/documento.doc");
        File ficheroDestino = new File("target/documento.doc");
        try
        {
            FileUtils.copyFile(ficheroOrigen , ficheroDestino);
            System.out.println("Fichero copiado satisfactoriamente.");

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

Copia ficheros Java usando Java 7 NIO 2 API

Se utiliza el método Files.copy(), se integra con O/S nativo I/O para alto rendimiento.

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import static java.nio.file.StandardCopyOption.*;
import static java.nio.file.LinkOption.*; 

public class DemoCopiaFichero
 {
    public static void main(String args[]) 
    {
        try 
        {
            Path bytes = Files.copy(new Java.io.File("bin/documento.doc").toPath(), new java.io.File("target/documento.doc").toPath(), REPLACE_EXISTING, COPY_ATTRIBUTES, NOFOLLOW_LINKS);
            System.out.println("Fichero copiado.");
        } 
        catch (IOException e) 
        {
            e.printStackTrace();
        }
    }
}

Más algoritmos de gestión de ficheros

TemaDescripción
Escribir FicheroEscribir en un fichero de texto
Leer FicheroLeer un fichero de texto
Copiar FicherosCopiar ficheros de un path a otro

Recursos básicos java

AsuntoDescripción
Tutorial básico y sintaxisTutorial básico Java y sintaxis. Aprende los fundamentos del lenguaje.
Hilos (Threads)Aprende a manejar hilos y las cuestiones básicas de la concurrencia
Funciones LambdaAquí te enseñamos las nociones más importantes para arrancas con funciones lambda
PalíndromosPrograma de ejemplo para el uso de palíndromos en Java.
Máquina Virtual de JavaTe explicamos el funcionamiento de la máquina virtual de java (Java Virtual Machine – JVM)
JDK, JRE y JVMDiferencias entre el JDK, JRE y JVM.
Mejores libros Java en EspañolHazte con los mejores libros Java para aprender paso a paso y profundizar en las mejores prácticas
TensorFlowManejo del API de TensorFlow para la construcción de grafos de operaciones y su ejecución
Tutorial Log4jTutorial para el manejo de Log4j, herramienta ágil y flexible para la gestión de Logs en Java
Java SecurityEntiende y aplica las posibilidades que da Java para mantener la seguridad
Tutorial JConsoleAprende los conceptos básicos de monitorización de procesos Java con JConsole
JavaFXTutorial de JavaFX, librería gráfica moderna para construcción de GUIs en móvil, escritorio y web.
Estructuras de datos en JavaExplicación y ejemplos de las estructuras de datos más importantes: listas, pila, cola, arbol.
JavaapiConjunto de clases, interfaces, métodos y paquetes que forman parte de la plataforma Java estándar
Algoritmo HuffmanMétodo eficiente para codificar datos, asignando códigos más cortos a los caracteres más frecuentes