import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Properties; public class FileUtil { public static boolean mergeFilesToOneFile(List<File> files, File file, String encoding, boolean isAppend) { OutputStream outputStream = null; InputStream inputStream = null; try { for (File file2 : files) { System.out.println("开始合并文件" + file2.getPath() + "..."); if (!file2.canRead()) { throw new Exception("没有读取权限!\nat " + file2.getPath()); } inputStream = new FileInputStream(file2); outputStream = new FileOutputStream(file, isAppend); byte[] buffer = new byte['Ѐ']; int n = 0; while ((n = inputStream.read(buffer)) != -1) { outputStream.write(buffer, 0, n); } outputStream.flush(); outputStream.close(); inputStream.close(); System.out.println("合并文件" + file2.getPath() + "成功!"); isAppend = true; } System.out.println("合并程序运行结束!\nat " + new Date()); return true; } catch (Exception e) { e.printStackTrace(); return false; } finally { try { outputStream.close(); inputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } public static boolean mergeFilesToOneFile(String directoryPath, String reg, String path, String fileName, String encoding, boolean isAppend) { String filePath = path + "/" + fileName; try { return mergeFilesToOneFile(directoryPath, reg, filePath, encoding, isAppend); } catch (Exception e) { e.printStackTrace(); } return false; } public static boolean mergeFilesToOneFile(String directoryPath, String reg, String filePath, String encoding, boolean isAppend) throws Exception { File directoryFile = new File(directoryPath); if (!directoryFile.isDirectory()) { throw new Exception("文件夹路径错误![文件不能转换为文件夹]"); } File file = new File(filePath); if (file.isDirectory()) { throw new Exception("文件路径错误!文件夹不能转换为文件]"); } List<File> files = filesFilter(getFilesFromDirectory(directoryFile), reg); return mergeFilesToOneFile(files, file, encoding, isAppend); } public static boolean mergeFilesToOneFile(String propertyFilePath, String propertyName, String filePath, String encoding, String reg, boolean isAppend, boolean isAllPropertyReadByPropertyFile) { try { System.out.println("正在读取" + propertyFilePath + "..."); InputStream in = new BufferedInputStream(new FileInputStream(propertyFilePath)); Properties p = new Properties(); p.load(in); String directoryPath = p.getProperty(propertyName); if (isAllPropertyReadByPropertyFile) { reg = p.getProperty("reg"); filePath = p.getProperty("filePath"); encoding = p.getProperty("encoding"); isAppend = Boolean.parseBoolean(p.getProperty("isAppend")); } System.out.println("读取完毕,正在合并..."); return mergeFilesToOneFile(directoryPath, reg, filePath, encoding, isAppend); } catch (Exception e) { e.printStackTrace(); } return false; } public static List<File> getFilesFromDirectory(File f) { List<File> files = new ArrayList<File>(); System.out.println("开始扫描文件夹" + f.getPath() + "..."); File[] ff = f.listFiles(); File[] arrayOfFile1; int j = (arrayOfFile1 = ff).length; for (int i = 0; i < j; i++) { File child = arrayOfFile1[i]; if (child.isDirectory()) { System.out.println("发现文件夹:" + child.getPath()); files.addAll(getFilesFromDirectory(child)); } else { files.add(child); System.out.println("发现文件:" + child.getPath()); } } System.out.println("文件夹" + f.getPath() + "扫描结束!"); return files; } public static List<String> fileNamesFilter(List<String> fileNames, String reg) { List<String> list = new ArrayList<String>(); for (String str : fileNames) { if (str.matches(".*\\" + reg + "$")) { list.add(str); } } return list; } public static List<File> filesFilter(List<File> files, String reg) { List<File> list = new ArrayList<File>(); for (File file : files) { if (file.getName().matches(".*\\" + reg + "$")) { list.add(file); } } return list; } }
相关推荐
本题的面试题旨在考察开发者对文件操作,特别是文件合并及IO流的理解与应用。题目要求将`a.txt`和`b.txt`两个文本文件的内容合并,并写入到`c.txt`文件中。这是一个典型的文件读取、合并以及写入的操作,涉及到Java...
在Java编程环境中,合并多个PDF...通过上述代码,你可以在Java项目中实现将PDF文件夹中的多个PDF文件合并为一个PDF文件。请确保在运行代码之前,已经正确配置了PDFBox库,并且提供的文件夹路径包含了要合并的PDF文件。
通过以上步骤,你可以使用Java和Apache PDFBox成功地将多个Base64编码的PDF文件合并为一个PDF文件。这种方法在处理大量PDF文件时非常有效,且代码简洁易于维护。同时,Apache PDFBox库还提供了许多其他功能,如PDF元...
下面我们将深入探讨关于多文件夹/文件合并的知识点,以及如何使用Java实现这一功能。 **1. 文件与文件夹合并的概念** 文件合并通常涉及到将两个或多个文件内容拼接在一起,形成一个新的单一文件。而文件夹合并则...
在Java编程语言中,将多个小文件合并成一个文件是一个常见的需求,特别是在处理大量数据或者进行文件归档时。这个过程通常称为文件拼接或文件合并。以下将详细讲解如何使用Java来实现这一功能。 首先,我们需要理解...
文件合并则是将多个小文件恢复为原始大文件的过程。在Java中,我们可以使用`java.nio`包中的`FileChannel`类来实现高效的数据传输。以下是一个简单的文件合并示例: ```java import java.io.IOException; import ...
pdf文件合并拼接 package com.zht; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.apache.pdfbox.io.MemoryUsageSetting; import...
接下来,我们讨论文件合并的过程,它主要包括以下步骤: 1. **读取子文件**:按照之前创建的子文件顺序,使用`FileInputStream`打开每个子文件。 2. **创建目标文件**:用`FileOutputStream`创建一个新的输出流,...
文件合并是将多个小文件合并回一个大文件的过程。这通常涉及读取每个子文件并将其内容追加到目标文件中。以下是一个简单的文件合并示例: ```java import java.io.*; public class FileMerger { public static ...
在实现文件合并时,作者可以使用Java的File类来读取拆分后的文件,然后使用BufferedReader类来读取文件的内容。接着,作者可以使用BufferedWriter类来写入文件,实现文件的合并操作。 在实现文件合并时,作者需要...
在Java开发中,PDF文档处理是一项常见的任务,特别是在企业级应用中,可能需要将多个PDF文件合并成一个,便于管理和阅读。本实例将探讨如何使用Java进行PDF合并,特别是通过iText库实现这一功能。 iText是一个开源...
这个简单的Java应用展示了如何在Java中处理文件合并的场景,尤其适用于数据处理任务。如果你需要处理大量数据,可能还需要考虑线程安全、性能优化以及错误处理等方面的问题。记住,实际应用中,一定要对文件路径和...
本篇文章将详细探讨“File merge文件合并”这一主题,包括其概念、应用场景、以及如何在Java编程语言中实现文件合并。 文件合并的主要目的是简化工作流程,减少信息碎片化。它常用于日志聚合、报告生成、数据整合等...
文件合并的过程通常是在拆分之后逆向操作。可以创建一个`Merger`类,它遍历所有拆分后的文件,逐行读取并写入到一个新的文件中。合并时,可以按照拆分文件时的顺序进行,保证合并后的文件内容与原始文件一致。 ```...
### Java实现文件拆分合并 #### 一、背景与需求分析 在大数据处理场景中,经常需要对大型文件进行拆分或合并操作。例如,在分布式处理系统中,为了提高并行处理效率,需要将单个大文件拆分成多个较小的文件,以...
1. **小文件合并**:小文件合并是解决Spark性能问题的关键策略之一。当HDFS上有大量小文件时,每个文件都会创建一个RDD或DataFrame的分区,导致大量小任务,增加了调度开销。通过合并小文件,可以减少分区数量,使得...
`MergeFiles.java`则可能是负责文件合并的类,它可能读取所有的小文件,按照原始顺序将它们组合在一起,恢复成原始的大文件。合并过程中可能需要考虑到文件的排序,以确保合并的正确性。 在实际应用中,文件分割与...
当解压合并结束后,程序将PROVINCE_DIR路径下的文件移动到DONE_FILE_PATH下,并且删除PROVINCE_DIR跟UN_ZIP_PATH下文件,这样保证程序每次运行PROVINCE_DIR文件夹下的文件跟UN_ZIP_PATH下的文件都是最新未处理过的,...
在文件合并时,程序会反向操作,将所有小文件的内容读取并写入一个新的大文件中。这个过程可能包括: 1. 检查子文件:确保所有子文件都存在且顺序正确。 2. 创建目标文件:创建一个新的`File`对象,作为合并后的文件...
1. **Linux命令:文件合并** - 合并文件是通过`cat`命令实现的。例如,`cat /home/leo/sd_000.txt /home/leo/sd_001.txt /home/leo/sd_002`这个命令会将三个文本文件`sd_000.txt`, `sd_001.txt`, 和 `sd_002`的内容...