【Java代码】:实现文本文件合并
【代码说明】
解释:
基于面向对象的思想,代码的可扩展性强; 利于嫁接其他代码,实现更为强大的功能;
思路:
遍历文件根目录,找出所有要合并的文本文件; 遍历文件夹,然后通过文件过滤器找出文本文件;
以行读的方式读取文本文件,后写入目标文件; 通过基础的IO操作,对每一个符合条件的都进行;
诉求:
【实现代码】
import java.io.*; import java.nio.charset.StandardCharsets; /** * 文本文件的合并 * * @author SUNxRUN */ public class TextUnite { // 要合并的文本内容最终保存的文件 public File targetFile = new File("E://AAAAA.txt"); /** * 遍历一个文件目录内的所有相关的文件 * 利用递归的方法遍历文件夹内所有的文件 * * @param sourceDir 要合并的文本文件所在的根目录 */ public void documentTraversal(File sourceDir) { if (sourceDir.isFile()) { System.out.println(sourceDir.getAbsolutePath()); } else { File[] fileList = sourceDir.listFiles( // 定义要留下的文件 (f) -> f.getName().contains(".txt") ); if (fileList != null && fileList.length > 0) { for (File f : fileList) { if (f.isFile()) { // 开始合并文本的操作 fileCopy(f); } else { documentTraversal(f); } } } } } /** * 复制一个文本文件的内容到另一个文本文件中 * * @param sourceFile 要复制的文本文件 */ public void fileCopy(File sourceFile) { FileInputStream fis; InputStreamReader isr; BufferedReader br = null; FileOutputStream fos; OutputStreamWriter osw; BufferedWriter bw; PrintWriter pw = null; try { // 输入流的创建 fis = new FileInputStream(sourceFile); isr = new InputStreamReader(fis, StandardCharsets.UTF_8); br = new BufferedReader(isr); // 输出流的创建 fos = new FileOutputStream(targetFile, true); osw = new OutputStreamWriter(fos, StandardCharsets.UTF_8); bw = new BufferedWriter(osw); pw = new PrintWriter(bw, true); // 输入一行空行分割文本文件内容 // 当多个文本文件合并时,便于区分 pw.println(""); // 文本内容复制操作 String line; while ((line = br.readLine()) != null) { pw.println(line); } } catch (Exception e) { e.printStackTrace(); } finally { pw.close(); try { br.close(); } catch (IOException e) { e.printStackTrace(); } } } public static void main(String[] args) { TextUnite textUnite = new TextUnite(); textUnite.documentTraversal(new File("E:/")); } }