`

java.file文件合并

    博客分类:
  • Java
阅读更多
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;
	}
}

 

分享到:
评论

相关推荐

    面试题:把a.txt、b.txt文件合并写到c.txt文件

    本题的面试题旨在考察开发者对文件操作,特别是文件合并及IO流的理解与应用。题目要求将`a.txt`和`b.txt`两个文本文件的内容合并,并写入到`c.txt`文件中。这是一个典型的文件读取、合并以及写入的操作,涉及到Java...

    java多个PDF文件合并为一个PDF文件源码

    在Java编程环境中,合并多个PDF...通过上述代码,你可以在Java项目中实现将PDF文件夹中的多个PDF文件合并为一个PDF文件。请确保在运行代码之前,已经正确配置了PDFBox库,并且提供的文件夹路径包含了要合并的PDF文件。

    java多个pdf文件合并成一个

    通过以上步骤,你可以使用Java和Apache PDFBox成功地将多个Base64编码的PDF文件合并为一个PDF文件。这种方法在处理大量PDF文件时非常有效,且代码简洁易于维护。同时,Apache PDFBox库还提供了许多其他功能,如PDF元...

    多文件夹/文件的合并软件及源代码(Java)

    下面我们将深入探讨关于多文件夹/文件合并的知识点,以及如何使用Java实现这一功能。 **1. 文件与文件夹合并的概念** 文件合并通常涉及到将两个或多个文件内容拼接在一起,形成一个新的单一文件。而文件夹合并则...

    java 多个小文件合成一个文件

    在Java编程语言中,将多个小文件合并成一个文件是一个常见的需求,特别是在处理大量数据或者进行文件归档时。这个过程通常称为文件拼接或文件合并。以下将详细讲解如何使用Java来实现这一功能。 首先,我们需要理解...

    大文件分割与合并

    文件合并则是将多个小文件恢复为原始大文件的过程。在Java中,我们可以使用`java.nio`包中的`FileChannel`类来实现高效的数据传输。以下是一个简单的文件合并示例: ```java import java.io.IOException; import ...

    pdfbox-2.0.17.zip pdf文件合并拼接

    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...

    java文件分割合并

    接下来,我们讨论文件合并的过程,它主要包括以下步骤: 1. **读取子文件**:按照之前创建的子文件顺序,使用`FileInputStream`打开每个子文件。 2. **创建目标文件**:用`FileOutputStream`创建一个新的输出流,...

    java_文件拆分合并

    文件合并是将多个小文件合并回一个大文件的过程。这通常涉及读取每个子文件并将其内容追加到目标文件中。以下是一个简单的文件合并示例: ```java import java.io.*; public class FileMerger { public static ...

    Java文件的拆分与合并.pdf

    在实现文件合并时,作者可以使用Java的File类来读取拆分后的文件,然后使用BufferedReader类来读取文件的内容。接着,作者可以使用BufferedWriter类来写入文件,实现文件的合并操作。 在实现文件合并时,作者需要...

    java pdf合并实例

    在Java开发中,PDF文档处理是一项常见的任务,特别是在企业级应用中,可能需要将多个PDF文件合并成一个,便于管理和阅读。本实例将探讨如何使用Java进行PDF合并,特别是通过iText库实现这一功能。 iText是一个开源...

    按照列合并文件

    这个简单的Java应用展示了如何在Java中处理文件合并的场景,尤其适用于数据处理任务。如果你需要处理大量数据,可能还需要考虑线程安全、性能优化以及错误处理等方面的问题。记住,实际应用中,一定要对文件路径和...

    File merge文件合并

    本篇文章将详细探讨“File merge文件合并”这一主题,包括其概念、应用场景、以及如何在Java编程语言中实现文件合并。 文件合并的主要目的是简化工作流程,减少信息碎片化。它常用于日志聚合、报告生成、数据整合等...

    Java文件的拆分与合并[收集].pdf

    文件合并的过程通常是在拆分之后逆向操作。可以创建一个`Merger`类,它遍历所有拆分后的文件,逐行读取并写入到一个新的文件中。合并时,可以按照拆分文件时的顺序进行,保证合并后的文件内容与原始文件一致。 ```...

    Java实现文件拆分合并

    ### Java实现文件拆分合并 #### 一、背景与需求分析 在大数据处理场景中,经常需要对大型文件进行拆分或合并操作。例如,在分布式处理系统中,为了提高并行处理效率,需要将单个大文件拆分成多个较小的文件,以...

    Spark小文件异步合并工具

    1. **小文件合并**:小文件合并是解决Spark性能问题的关键策略之一。当HDFS上有大量小文件时,每个文件都会创建一个RDD或DataFrame的分区,导致大量小任务,增加了调度开销。通过合并小文件,可以减少分区数量,使得...

    Java写的文件分割与合并器

    `MergeFiles.java`则可能是负责文件合并的类,它可能读取所有的小文件,按照原始顺序将它们组合在一起,恢复成原始的大文件。合并过程中可能需要考虑到文件的排序,以确保合并的正确性。 在实际应用中,文件分割与...

    Java实现zp大文件解压、合并、复制、删除(30万文件大约2个小时)

    当解压合并结束后,程序将PROVINCE_DIR路径下的文件移动到DONE_FILE_PATH下,并且删除PROVINCE_DIR跟UN_ZIP_PATH下文件,这样保证程序每次运行PROVINCE_DIR文件夹下的文件跟UN_ZIP_PATH下的文件都是最新未处理过的,...

    将大文件分割及合并java源码

    在文件合并时,程序会反向操作,将所有小文件的内容读取并写入一个新的大文件中。这个过程可能包括: 1. 检查子文件:确保所有子文件都存在且顺序正确。 2. 创建目标文件:创建一个新的`File`对象,作为合并后的文件...

    14-Java操作Linux命令分割合并文本文件1

    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`的内容...

Global site tag (gtag.js) - Google Analytics