¿Como mover más de un archivo en Java?

publicado por: Anonymous

Actualmente soy muy nuevo en el lenguaje de Java y me cuesta algo aprender algunas cosas.

Estoy investigando alguna manera para mover ciertos archivos PDF, estos archivos en su nombre tienen un número que los identifica, para ello, quiero cargar todos los archivos que vienen dentro de una carpeta, cuando estos sean cargados en el programa, lo que hará será crear una carpeta con el numero serial del archivo, y dentro de esa carpeta guardar todos los archivos que tengan ese número serial. No pido que me hagan el trabajo, solo si alguien tuviera algún ejemplo me seria de mucha ayuda, gracias.

solución

Si tienes la carpeta donde se encuentran tus archivos, puedes filtrar los archivos que necesitas copiar y luego ir copiando uno por uno a la nueva carpeta. La nueva carpeta la puedes crear en la ubicación deseada y luego acceder a esa carpeta para “pegar” los archivos.

Una idea base sería así:

import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.stream.Stream;

//...

String serial = "3344"; //acá el patrón del nombre del archivo
String rutaCarpetaInicial = "C:\tmp\pdfs";
String rutaPadreCarpetaFinal = "C:\tmp\final\";
//acceder al directorio de la carpeta inicial
File carpetaInicial = new File(rutaCarpetaInicial);
//acceder al directorio padre de la carpeta final
File padreCarpetaFinal = new File(rutaPadreCarpetaFinal);
//carpeta final real
File carpetaFinal = new File(padreCarpetaFinal, serial);
//crear la carpeta final
carpetaFinal.mkdir();
//obtener todos los archivos que contengan el serial en el nombre
//y luego ir copiando 1 por 1 a la carpeta final
Stream.of(carpetaInicial.listFiles(
        f -> f.getName().contains(serial))
    ).forEach(f -> {
        //no puede ser un lambda de 1 sola línea porque el método copy lanza excepción
        try {
            //si necesitas que se reemplaces archivos existentes, puedes agregar el modo REPLACE_EXISTING al final
            Files.copy(Paths.get(f.getAbsolutePath()), Paths.get(new File(carpetaFinal, f.getName()).getAbsolutePath()) );
        } catch (Exception e) {
            e.printStackTrace(System.out);
        }
    });
Respondido por: user227

Leave a Reply

Your email address will not be published. Required fields are marked *