Programa Java para fusionar contenidos de todos los archivos en un directorio

Requisito previo: PrintWriter , BufferedReader.  
Nos dan un directorio/carpeta en el que se almacenan n número de archivos (no sabemos el número de archivos) y queremos fusionar el contenido de todos los archivos en un solo archivo, digamos salida.txt 
Para el siguiente ejemplo, digamos la carpeta se almacena en la ruta: F:\GeeksForGeeks Los
siguientes son los pasos: 
 

  1. Crear instancia de directorio.
  2. Cree un objeto PrintWriter para «output.txt».
  3. Obtenga una lista de todos los archivos en forma de String Array.
  4. Bucle para leer el contenido de todos los archivos en el directorio GeeksForGeeks.
  5. Dentro del bucle para cada archivo do
    1. Cree una instancia de archivo a partir del Nombre del archivo almacenado en la array de strings.
    2. Crear objeto de BufferedReader para leer desde el archivo actual.
    3. Leer del archivo actual.
    4. Escribir en el archivo de salida.

Java

// Java program to merge all files of a directory
import java.io.*;
class sample {
 
    public static void main(String[] args) throws IOException
    {
        // create instance of directory
        File dir = new File("F:\\GeeksForGeeks");
 
        // create object of PrintWriter for output file
        PrintWriter pw = new PrintWriter("output.txt");
 
        // Get list of all the files in form of String Array
        String[] fileNames = dir.list();
 
        // loop for reading the contents of all the files
        // in the directory GeeksForGeeks
        for (String fileName : fileNames) {
            System.out.println("Reading from " + fileName);
 
            // create instance of file from Name of
            // the file stored in string Array
            File f = new File(dir, fileName);
 
            // create object of BufferedReader
            BufferedReader br = new BufferedReader(new FileReader(f));
            pw.println("Contents of file " + fileName);
 
            // Read from current file
            String line = br.readLine();
            while (line != null) {
 
                // write to the output file
                pw.println(line);
                line = br.readLine();
            }
            pw.flush();
        }
        System.out.println("Reading from all files" +
        " in directory " + dir.getName() + " Completed");
    }
}

Contenido de la carpeta F\GeeksForGeeks 

Contenido de 3 archivos en la carpeta GeeksForGeeks: 

Archivo de salida:
 

Publicación traducida automáticamente

Artículo escrito por SandySharma y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *