`
biekwo
  • 浏览: 37483 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

合并文件2

阅读更多
合并文件
/**
 * 合并文件:合并由拆分文件拆分的文件
 * 要求将拆分文件放到一个文件夹中
 * 主要利用随机文件读取和文件输入输出流
 */
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.MappedByteBuffer;
import java.nio.channels.FileChannel;

import java.util.Arrays;
import java.util.Date;
import java.util.StringTokenizer;

public class Combination {
	String srcDirectory = null;// 拆分文件存放的目录

	String[] separatedFiles;// 存放所有拆分文件名

	String[][] separatedFilesAndSize;// 存放所有拆分文件名及分件大小

	int FileNum = 0;// 确定文件个数

	String fileRealName = "";// 据拆分文件名确定现在原文件名

	public Combination() {
		srcDirectory = "f:\\test\\";
	}

	/**
	 * 
	 * @param sFileName
	 *            任一一个拆分文件名
	 * @return 原文件名
	 */
	private String getRealName(String sFileName) {
		StringTokenizer st = new StringTokenizer(sFileName, ".");
		return st.nextToken() + "." + st.nextToken();
	}

	/**
	 * 取得指定拆分文件模块的文件大小
	 * 
	 * @param FileName
	 *            拆分的文件名
	 * @return
	 */
	private long getFileSize(String FileName) {
		FileName = srcDirectory + FileName;
		return (new File(FileName).length());
	}

	/**
	 * 生成一些属性,做初使化
	 * 
	 * @param drictory
	 *            拆分文件目录
	 */
	private void getFileAttribute(String drictory) {
		File file = new File(drictory);
		separatedFiles = new String[file.list().length];// 依文件数目动态生成一维数组,只有文件名
		separatedFiles = file.list();
		// 依文件数目动态生成二维数组,包括文件名和文件大小
		// 第一维装文件名,第二维为该文件的字节大小
		separatedFilesAndSize = new String[separatedFiles.length][2];
		SepComparator sepComparator = new SepComparator();
		Arrays.sort(separatedFiles,sepComparator);//排序
//		Arrays.sort(separatedFiles);// 排序
		
		FileNum = separatedFiles.length;// 当前文件夹下面有多少个文件
		for (int i = 0; i < FileNum; i++) {
			separatedFilesAndSize[i][0] = separatedFiles[i];// 文件名
			separatedFilesAndSize[i][1] = String
					.valueOf(getFileSize(separatedFiles[i]));// 文件大x
		}
		fileRealName = getRealName(separatedFiles[FileNum - 1]);// 取得文件分隔前的原文件名
	}

	/**
	 * 合并文件:利用随机文件读写
	 * 
	 * @return true为成功合并文件
	 */
	private boolean CombFile() {
		RandomAccessFile raf = null;
		long alreadyWrite = 0;
		FileInputStream fis = null;
		int len = 0;
		byte[] bt = new byte[10*1024*1024];
		try {
			//文件的输出地址......
			raf = new RandomAccessFile(srcDirectory + fileRealName, "rw");
			for (int i = 0; i < FileNum; i++) {
				raf.seek(alreadyWrite);
				fis = new FileInputStream(srcDirectory
						+ separatedFilesAndSize[i][0]);
				//
				long size=Long.parseLong(separatedFilesAndSize[i][1]);
				MappedByteBuffer buf = fis.getChannel().map(FileChannel.MapMode.READ_ONLY, 0,size);
				raf.getChannel().write(buf);
//				while ((len = fis.read(bt)) > 0) {
//					raf.write(bt, 0, len);
//				}
				fis.close();
				alreadyWrite = alreadyWrite
						+ Long.parseLong(separatedFilesAndSize[i][1]);
			}
			raf.close();
		} catch (Exception e) {
			e.printStackTrace();
			try {
				if (raf != null)
					raf.close();
				if (fis != null)
					fis.close();
			} catch (IOException f) {
				f.printStackTrace();
			}
			return false;
		}
		return true;
	}

	public static void main(String[] args) {
		System.out.println("开始时间:"+new Date());
		Combination combination = new Combination();
		combination.getFileAttribute(combination.srcDirectory);
		combination.CombFile();
		System.out.println("结束时间:"+new Date());
		System.exit(0);
	}
}


分享到:
评论

相关推荐

    文件分割器(自带bat文件合并文件).rar

    这个名为"文件分割器(自带bat文件合并文件).rar"的压缩包中,包含了文件分割器软件以及相关的批处理(BAT)文件,用于合并已经分割的文件。批处理文件是一种基于DOS命令的简单脚本,能够自动执行一系列操作,比如...

    调用copy/b命令合并文件的小软件——文件合并器

    2. 源代码管理:开发者可能需要将多个源代码文件合并为一个单一的可执行文件,便于分发或简化部署。 3. 镜像创建:在制作ISO或其他类型镜像文件时,可能需要将多个文件合并为一个镜像,便于刻录或在线分发。 4. 文档...

    文件切割,文件合并

    合并文件同样可以在Java中通过`FileInputStream`和`FileOutputStream`完成。 2. **Java实现文件合并**: 以下是一个简单的文件合并示例: ```java import java.io.*; public class FileMerger { public ...

    合并TIF文件:合并多个TIF文件到【单个TIF文件】

    2、可以合并多个TIF文件到【单个文件】; 3、待合并的每个TIF文件:可以是已经包含单个TIF 或 多个TIF; 4、待合并的TIF文件【必须以数字为文件名】,合并时,按数字文件名【升序合并】而不会随机合并; 5、做成DLL...

    实现文件合并,尤其对大文件合并很方面

    在提供的压缩包"合并文件小程序"中,我们可以期待找到一个用VC++实现的简单文件合并程序。VC++,即Visual C++,是Microsoft开发的集成开发环境,支持C++语言,包含丰富的库函数和API,适合进行系统级编程和文件操作...

    csv文件批量合并工具

    这个工具允许用户选择是否将每个合并文件的第一行(即标题行)纳入最终合并文件。如果选择不导入,合并后的文件将只包含数据,没有列名;如果选择导入,所有原始文件的标题行都会保留在合并文件中,这对于保持数据的...

    pdf格式文件合并 将文件放置到目录pdf中,以pdf为后缀名 合并后生成的文件名为《合并文件.pdf》

    合并后生成的文件名为《合并文件.pdf》 pdf格式文件合并 将文件放置到目录pdf中,以pdf为后缀名 合并后生成的文件名为《合并文件.pdf》 pdf格式文件合并 将文件放置到目录pdf中,以pdf为后缀名 合并后生成的文件名为...

    BIN文件合并工具

    这款工具的独特之处在于,它不仅实现了合并功能,还支持对每个BIN文件在新合并文件中的精确位置进行设定,这对于数据恢复、备份或分发具有重要意义。 首先,我们需要理解BIN文件的基本概念。BIN是Binary Image的...

    WPS的js宏写的Excel文件合并工具,通过文件对话框选择文件来合并表格

    2. 示例的Excel表格文件(4个):用于测试和演示合并功能,用户可以使用这些文件来验证工具的正确性和实用性。 值得注意的是,由于这个工具使用了JS宏,因此需要用户在WPS Excel中启用宏功能。同时,为了确保安全性...

    DXF文件合并工具

    DXF文件合并工具是一款专为32位操作系统设计的应用程序,其主要功能是将多个DXF(Drawing Exchange Format)文件整合成一个单一的文件。DXF是一种由Autodesk开发的文件格式,主要用于CAD(计算机辅助设计)软件之间...

    可实现hex文件三种方式的合并1,简单复制合并2,删除最后一行hex文件后合并3同时实现前两种形式同时合并

    例如,你可以使用`copy`或`type`命令来读取和合并文件,使用`findstr`或`find`来查找特定行,以及使用`del`命令来删除特定行。但是,要执行更复杂的合并(如第三种方式),可能需要使用像`for`循环和条件判断这样的...

    csv合并工具,csv合并器,csv文件合并工具

    CSV文件批量合并工具(批量合并多个CSV文件)是一款简洁好用,绿色小巧的CSV文件合并工具。CSV文件批量合并工具非常的使用,让你能够更轻松快捷的进行CSV文件合并工作,非常方便。可以同时批量合并多个CSV文本文件,...

    HEX合并软件+可用于两个HXE文件的合并

    理解这种格式对于正确合并文件至关重要。 3. **数据一致性**:在合并过程中,软件需要确保不丢失任何数据,并且合并后文件的结构保持有效。这可能需要处理冲突、校验和检查以及数据定位等问题。 4. **数据完整性**...

    bin文件合并源码

    3. 写入合并文件:创建一个新的BIN文件,这可以通过`fopen`函数实现,指定写入模式。接着,按照读取的顺序,将两个源文件的内容逐字节地写入到新文件中。 4. 关闭文件:在完成写入后,使用`fclose`函数关闭所有打开...

    两个bin文件合并成1个bin文件UBIN.zip

    2. 文件合并:通过编程或使用特定工具将多个BIN文件的内容整合到一个新文件中。 3. ZIP压缩:将多个文件打包成一个ZIP文件,便于传输和存储。 4. 解压缩:使用解压缩软件从ZIP文件中提取原始文件。 5. 文件操作:...

    多个文件合并成一个大文件

    在合并文件时,需要考虑文件的格式兼容性、大小限制、合并后文件的可读性或可播放性,以及合并过程中的错误处理。此外,如果文件较大,可能需要考虑合并效率和存储空间。 7. **安全性与备份** 在合并文件前,确保...

    Hive内部表合并小文件Java程序

    2. **确定合并文件大小**:设置一个合适的合并文件大小阈值,比如128MB或256MB,这取决于系统的具体需求和资源。 3. **创建SequenceFile**:Hadoop的SequenceFile是一种高效的数据存储格式,适合用于合并小文件。...

    文件与复制合并.rar_合并文件_文件 存储_文件合并

    2. 遍历每个文件,读取其内容,并将其写入目标合并文件。 3. 记录每个文件的元数据(文件名、长度、在合并文件中的偏移量)。 4. 在所有文件内容写入后,将元数据追加到合并文件的末尾。 在恢复过程中,程序会读取...

    使用jflash合并两个bin文件

    为了简化烧写过程,开发者可能会希望将这些分离的bin文件合并成一个完整的文件。J-FlashARM是一个用于ARM微控制器的编程工具,它可以帮助开发者通过特定步骤将多个bin文件合并在一起。 首先,要使用J-FlashARM合并...

Global site tag (gtag.js) - Google Analytics