import java.io.*;
import java.util.*;
class SequenceDemo
{
public static void main(String[] args) throws IOException
{
//split();
//merge();
merge2();
}
public static void merge()throws IOException{
//虽然Vector可以直接产生枚举类,但是它的利用效率低.
Vector<FileInputStream> v=new Vector<FileInputStream>();
v.add(new FileInputStream("2.txt"));
v.add(new FileInputStream("3.txt"));
v.add(new FileInputStream("1.txt"));
Enumeration<FileInputStream> en=v.elements();
SequenceInputStream sis=new SequenceInputStream(en);
FileOutputStream fos=new FileOutputStream("4.txt");
int len=0;
byte[] buf=new byte[1024];
while ((len=sis.read(buf))!=-1)
{
fos.write(buf,0,len);
}
fos.close();
sis.close();
System.out.println("Hello World!");
}
public static void merge2()throws IOException{
//用Arraylist集合来集成输入流,比Vector效率高
ArrayList<FileInputStream> al=new ArrayList<FileInputStream>();
for(int i=1;i<4;i++){
al.add(new FileInputStream("fileParts"+i+".part"));
}
//通过迭代器来创建枚举类
final Iterator it=al.iterator();
Enumeration<FileInputStream> en=new Enumeration<FileInputStream>(){
public boolean hasMoreElements(){
return it.hasNext();
}
public FileInputStream nextElement(){
return (FileInputStream)it.next();
}
};
SequenceInputStream sis=new SequenceInputStream(en);
FileOutputStream fos=new FileOutputStream("0.bmp");
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 split()throws IOException{
FileInputStream fis=new FileInputStream("1.bmp");
FileOutputStream fos=null;
byte[] buf=new byte[1024*1024];
int count=0;
int len=0;
while((len=fis.read(buf))!=-1){
fos=new FileOutputStream("fileParts"+(++count)+".part");
fos.write(buf,0,len);
fos.close();
}
fis.close();
}
}
Java中 分割大文件以及合并部分文件的方法.
最新推荐文章于 2025-05-28 13:25:04 发布