Java分割合并文件

import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;

class Fen {
	String file; //要分割的文件名
	int size; //被分割的文件大小
	long[] byteArray;

	Fen(String file, String size) {
		this.file = file;
		this.size = Integer.parseInt(size) * 1024 * 5;
	}
	public int splitFileNumber(int fileLength){
		int number = fileLength / size ;
		int x = fileLength%size > 0 ? 1:0;
		number = number + x;
		byteArray = new long[number];
		for(int i=0;i<fileLength/size;i++){
			byteArray[i] = size;
		}
		if(x == 1) byteArray[number-1] = fileLength%size;
		
		return number;
	}
	public void split() throws Exception {
		File inFile = new File(file);
		int fileLength = (int) inFile.length(); // 取得文件的大小
		int number; // 取得要分割的文件个数

		RandomAccessFile inn = new RandomAccessFile(inFile, "r");// 打开要分割的文件
		number = splitFileNumber(fileLength);

	
		int i = 0;
		long start = 0;
		
		for (int j = 0; j < number; j++) {
			File outFile = new File(inFile.getAbsolutePath() + j);
			System.out.println(outFile.getAbsolutePath());
			RandomAccessFile out = new RandomAccessFile(outFile, "rw");
			start += byteArray[j];
			for (; i < start; i++) {
				out.write(inn.read());
			}
			
			out.close();
		}
		inn.close();
	}
	public void Combination() throws IOException{
		File inFile = new File(file);
		int fileLength = (int) inFile.length(); // 取得文件的大小
		int number; // 取得要分割的文件个数
		File inNewFile = new File(inFile.getParent()+"\\"+"New"+inFile.getName());
		RandomAccessFile out = new RandomAccessFile(inNewFile, "rw");
		number = splitFileNumber(fileLength);
		
		for (int j = 0; j < number; j++) {
			File inFiles = new File(inFile.getAbsolutePath() + j);
			System.out.println(inFiles.getAbsolutePath());
			RandomAccessFile ins = new RandomAccessFile(inFiles, "r");
			
			for (int i = 0; i < inFiles.length(); i++) {
				out.write(ins.read());
			}
			
			ins.close();
		}
		out.close();
	}
}

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值