Algunos escenarios requieren que copie un archivo en Java. Puede estar creando un script simple para automatizar procesos para un administrador de archivos. Incluso podría estar escribiendo una aplicación completa que funcione con archivos.

Hay muchas maneras de copiar un archivo, según el rendimiento requerido, la simplicidad o incluso la versión de Java que esté utilizando.

Cómo copiar archivos usando FileInputStream y FileOutputStream

Este método funciona leyendo manualmente cada byte de datos del archivo y escribiéndolo en un nuevo destino. A diferencia del método Files.copy a continuación, puede usar este método para todas las versiones de Java, incluido Java 6 y anteriores.

Utiliza la clase FileInputStream para leer bytes de un archivo de origen y FileOutputStream para escribir bytes en el destino.

  1. Cree un archivo en cualquier parte de su computadora llamado "SimpleScript.java".
  2. Abra el archivo en un editor de texto o IDE y copie el siguiente código base en la aplicación.
    importar java.io. IOExcepción;
    instagram viewer

    claseSimpleScript{
    públicoestáticovacíoprincipal(Argumentos de cadena [])lanza IOException {
    // Tu código aquí
    }
    }

  3. Importe estas clases adicionales de Flujo de entrada y Flujo de salida en la parte superior del archivo, justo después de la primera declaración de importación.
    importar java.io. Expediente;
    importar java.io. Flujo de entrada;
    importar java.io. Salida de corriente;
    importar java.io. FileInputStream;
    importar java.io. FileOutputStream;
  4. Cree un nuevo archivo llamado "Copy-File-1.txt", en la misma carpeta que su archivo SimpleScript.java. Agregue cualquier contenido escrito dentro del archivo.
  5. En la misma carpeta, cree también un nuevo directorio llamado "Destino". El objetivo es copiar el archivo "Copy-File-1.txt" en la nueva carpeta.
  6. Dentro de la función principal de la clase, use la clase File para crear dos nuevos objetos de archivo. El origen, que será el archivo que quieras copiar, y el destino, que será donde quieras copiar el archivo. Si el archivo de destino no existe, su programa creará uno nuevo.
    claseSimpleScript{ 
    públicoestáticovacíoprincipal(Argumentos de cadena [])lanza IOException {
    // 1ra forma de copiar un archivo
    Fuente del archivo = nuevo Archivo("Copiar-Archivo-1.TXT");
    Destino del archivo = nuevo Archivo("Destino/Copiar-Archivo-1.TXT");
    }
    }
  7. Después de eso, cree un objeto InputStream y OutputStream.
    Entrada de flujo de entrada = nulo;
    Salida de flujo de salida = nulo;
  8. Utilice el flujo de entrada para leer los datos en bytes y el flujo de salida para escribir los datos en la nueva ubicación.
    probar {
    // Crear objetos FileInputStream y FileOutputStream
    entrada = nuevo FileInputStream (fuente);
    salida = nuevo FileOutputStream (destino);
    byte[] bueno = nuevobyte[1024];
    En t lectura de bytes;

    // Escribir bytes en el destino
    tiempo ((bytesRead = input.read (buf)) > 0) {
    salida.escribir (buf, 0, lectura de bytes);
    }
    } captura (IOExcepción e) {
    e.printStackTrace();
    System.out.println("No se pudo copiar el archivo al destino: " + destino.getPath() + ". Controlar si la carpeta o archivo ya existe.");
    } finalmente {
    // Cierra los flujos
    si (entrada != nulo) {
    entrada.cerrar();
    }

    si (salida! = nulo) {
    salida.cerrar();
    }
    }

    System.out.println("Archivo copiado");

  9. Para ejecutar el script, abra una línea de comando. Navegue a la carpeta donde almacenó su archivo Java usando el comando cd en el Símbolo del sistema de Windows o la terminal mac.
    discos compactos Escritorio
  10. Para compilar el script, guarde el archivo Java y ejecute el Javac comando en la línea de comando:
    javac SimpleScript.java
  11. Para ejecutar el script, utilice el Java dominio:
    Java SimpleScript
    Debería ver una sola línea de salida sin errores:
  12. Navegue a su carpeta "Destino" para ver su archivo copiado.
  13. Abra el archivo para ver el contenido, que su programa copió del archivo original.

Cómo copiar archivos usando Files.copy

Si usa Java 7 o posterior, puede usar el método Files.copy. Este método es generalmente una implementación más simple. De acuerdo con la Documentación Java, hay múltiples sobrecargas para la función.

Por ejemplo, el método Files.copy también puede usar un flujo de entrada para copiar archivos de una ubicación a otra, pero a través de un método que usa menos código. También puede usar Rutas o especificar cómo desea que el método copie su archivo.

  1. Cree un nuevo archivo llamado "Copy-File-2.txt", en la misma carpeta que su archivo SimpleScript.java. Agregue cualquier contenido escrito dentro del archivo.
  2. En la parte superior del archivo, agregue importaciones para "java.nio.file. Rutas" y "java.nio.file. clases de archivos".
    importar java.nio.archivo. Caminos;
    importar java.nio.archivo. archivos;
  3. Agregue dos cadenas, que representan la ruta de archivo relativa para el archivo de origen y el destino. Utilice el método Files.copy, que ya controlará la lógica para copiar el archivo en el destino.
    String copySource = "Copiar-archivo-2.TXT";
    String copyDestination = "Destino/Copiar-Archivo-2.TXT";

    probar {
    Files.copy (Paths.get (copySource), Paths.get (copyDestination));
    } captura (Excepción e) {
    System.out.println("No se pudo copiar el archivo al destino: " + copyDestination + ". Controlar si la carpeta o archivo ya existe.");
    }
    Sistema.salida.println("2nd Archivo copiado");

  4. Ejecute el script usando los comandos Javac y Java.
  5. Navegue a su carpeta "Destino" para ver su archivo copiado.

Cómo copiar archivos usando FileChannel.transferTo()

De acuerdo con la Documentación Java, este método puede ser una forma potencialmente más rápida de copiar archivos. Sin embargo, esto dependerá de la forma en que implemente la función.

  1. Cree un nuevo archivo llamado "Copy-File-3.txt", en la misma carpeta que su archivo SimpleScript.java. Agregue contenido de muestra a este archivo.
  2. En la parte superior de SimpleScript.java, importe el archivo "java.nio.channels. FileChannel" junto con tres de las clases comunes anteriores relacionadas con archivos del paquete io.
    importar java.io. Expediente;
    importar java.io. FileInputStream;
    importar java.io. FileOutputStream;
    importar java.nio.canales. canal de archivo;
  3. Cree objetos de archivo para el origen y el destino, y utilícelos para crear un flujo de entrada y un flujo de salida.
    Archivo origen = nuevo Archivo("Copiar-Archivo-3.TXT");
    archivo dst = nuevo Archivo("Destino/Copiar-Archivo-3.TXT");
    FileInputStream inStream = nuevo FileInputStream (src);
    FileOutputStream outStream = nuevo FileOutputStream (dst);
  4. Utilice el método TransferTo de la clase FileChannel para copiar el archivo a su destino.
    probar {
    FileChannel inChannel = inStream.getChannel();
    FileChannel outChannel = outStream.getChannel();
    enChannel.transferTo(0, inChannel.size(), outChannel);
    } captura (Excepción e) {
    System.out.println("No se pudo copiar el archivo al destino: " + dst.getPath() + ". Controlar si la carpeta o archivo ya existe.");
    } finalmente {
    // Cierra los flujos
    inStream.close();
    flujo de salida.close();
    }
    Sistema.salida.println("3rd Archivo copiado");
  5. Ejecute el script usando los comandos Javac y Java.
  6. Navegue a su carpeta "Destino" para ver su archivo copiado.

Copiar archivos en Java es solo el comienzo

Hay muchas formas de copiar un archivo en Java. Tres formas posibles incluyen usar el método de transmisión tradicional, el método Files.copy o el método transferTo.

Hay muchas otras operaciones del administrador de archivos que puede realizar con Java. Algunos de estos incluyen mover archivos, eliminar archivos o comprimir archivos. Estos pueden ser útiles para aprender si necesita automatizar ciertos procesos en el administrador de archivos.