Java_文件的分割与合并

如果要实现合并流,必须使用SequenceInputStream类


实例:先分割一个大于1M的文件,在将文件合并
import java.io.*;
import java.util.*;

class SplitFile{
public static void main(String[] args) throws IOException{
splitFile();//调用分割文件方法
merge();//调用整合文件方法
}

public static void merge() throws IOException{//创建合并方法
ArrayList al = new ArrayList();//创建一个集合,用于存储合并的文件
for(int x=1;x<=3; x++){
al.add(new FileInputStream //分割后的文件逐一并添加到集合中
("F:\\黑马程序员\\JavaP\\20140925\\SplitFile\\"
+x+".Christine Welch - 寻寻觅觅.mp3.part"));
}


final Iterator it = al.iterator();//调用集合的迭代器并指定类型

Enumeration en = new Enumeration(){ //创建枚举变量
public boolean hasMoreElements(){//判断是否还有与元素存在
return it.hasNext();//返回下一个元素
}
public FileInputStream nextElement(){
return it.next();//返回下一个元素
}
};

SequenceInputStream sis = new SequenceInputStream(en);//创建序列流,将枚举变量传入

FileOutputStream  fos = new FileOutputStream
("F:\\JavaP\\20140925\\SplitFile\\Christine Welch - 寻寻觅觅_copy.mp3"); //创建文件读取流并指定合并后的文件名

byte[] buf = new byte[1024];
int len = 0;
while((len=sis.read(buf)) != -1) {//判断是否达到文件结尾
fos.write(buf,0,len);//将文件写入到流中
}

fos.close();//关闭写入流
sis.close();//关闭序列刘备

}

public static void splitFile() throws IOException{ //创建分割方法
FileInputStream fis = new FileInputStream//创建读取流并加载要分割的文件
("F:\\JavaP\\20140925\\SplitFile\\Christine Welch - 寻寻觅觅.mp3");

FileOutputStream fos = null;//创建输出流引用
byte[] buf = new byte[1024*1024];//指定分割文件的大小

int len = 0;
int count = 1;
while((len=fis.read(buf)) != -1){//判断读取流是否到达最后位置
fos= new FileOutputStream //逐一分创建文件用于存储
("F:\\黑马程序员\\JavaP\\20140925\\SplitFile\\"
+(count++)+".Christine Welch - 寻寻觅觅.mp3.part");
fos.write(buf,0,len);//将分割后的文件存入分割流中
fos.close();//关闭输出流
}

if(fos != null)//判断输出流是否到达最后
fos.close();//关闭输出流
}
}

你可能感兴趣的:(Java)