java文件切割

文件切割既要提供切割功能,又要提供合并功能,下面两个类分别是切割类和合并类,允许用户指定切割尺度,切割后小文件的存放路径以及索引文件。

切割类首先按照用户输入的大小切割成小文件放入指定的文件夹,然后建立索引文件,存放文件个数。

合并类首先读取索引文件,得到原始文件名和小文件个数,然后逐个读取小文件拼接成大文件。

 

切割类:

import java.io.*;
/**
 * 文件分割类
 * @author la
 *
 */
public class CutFile {
	public String fileName=null;
	public long unitSize=0;//每个小文件的大小
	public String targetDir=null;//分割后小文件所在的文件夹
	public int cutFile() throws Exception{
		File file=new File(fileName);
		long size=file.length();//总字节数
		int count=0;//小文件数
		long pos=0;//当前位置
		long last=0;//剩余字节数
		DataInputStream dis=new DataInputStream(new BufferedInputStream(new FileInputStream(file), (int )unitSize));
		byte[] databuf=new byte[(int)unitSize];
		while(pos

合并类:


 

import java.io.*;
/**
 * 文件合并
 * @author la
 *
 */
public class LinkFile {
	public String fileName=null;
	public String targetDir=null;
	public int linkFIle()throws Exception {
		//得到小文件数
		int count=0;
		try {
			File countFile=new File(this.fileName);
			FileReader fReader=new FileReader(countFile);
			BufferedReader bReader=new BufferedReader(fReader);
			bReader.mark(1);
			count=Integer.parseInt(bReader.readLine());
			bReader.close();
		} catch (Exception e) {
			throw e;
		}
		//还原文件名和目录名
		String oldFileName=null;
		String countFileDir=null;
		try {
			String countFileName=new File(this.fileName).getName();
			countFileDir=fileName.substring(0, this.fileName.lastIndexOf(countFileName)).replace('\\', '/');
			oldFileName=countFileName.substring(0, countFileName.length()-6);
		} catch (Exception e) {
			throw e;
		}
		//合并小文件
		FileInputStream fis=null;
		byte[] data=null;
		try {
			FileOutputStream fos=new FileOutputStream(this.targetDir+oldFileName);
			for (int i = 1; i <=count; i++) {
				fis=new FileInputStream(countFileDir+oldFileName+"_"+i);
				data=new byte[fis.available()];
				fis.read(data);
				fis.close();
				fos.write(data);
			}
			fos.close();
		} catch (Exception e) {
			throw e;
		}
		return count;
	}
}


你可能感兴趣的:(java文件切割)