A menudo necesito fusionar varios archivos en uno en Java. Entonces escribo un método reutilizable para hacer este trabajo. Me funciona muy bien fusionar un conjunto de archivos txt.
El método acepta una matriz de Archivo y la ruta del archivo combinado. Después de ejecutar el método, el conjunto de archivos que se fusionarán se fusionará en el archivo especificado.
package com.programcreek; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileWriter; import java.io.IOException; import java.io.InputStreamReader; public class MergerFiles { public static void main(String[] args) { String sourceFile1Path = "/home/programcreek/Desktop/s1"; String sourceFile2Path = "/home/programcreek/Desktop/s2"; String mergedFilePath = "/home/programcreek/Desktop/m"; File[] files = new File[2]; files[0] = new File(sourceFile1Path); files[1] = new File(sourceFile2Path); File mergedFile = new File(mergedFilePath); mergeFiles(files, mergedFile); } public static void mergeFiles(File[] files, File mergedFile) { FileWriter fstream = null; BufferedWriter out = null; try { fstream = new FileWriter(mergedFile, true); out = new BufferedWriter(fstream); } catch (IOException e1) { e1.printStackTrace(); } for (File f : files) { System.out.println("merging: " + f.getName()); FileInputStream fis; try { fis = new FileInputStream(f); BufferedReader in = new BufferedReader(new InputStreamReader(fis)); String aLine; while ((aLine = in.readLine()) != null) { out.write(aLine); out.newLine(); } in.close(); } catch (IOException e) { e.printStackTrace(); } } try { out.close(); } catch (IOException e) { e.printStackTrace(); } } } |
Producción:
fusión: s1
fusión: s2
fusión: s2