Java IO流(合并流和切割文件)
2019-09-28 本文已影响0人
一亩三分甜
合并流
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.SequenceInputStream;
import java.util.Enumeration;
import java.util.Vector;
public class SequenceDemo {
public static void main(String[] args) throws IOException
{
Vector<FileInputStream> v = new Vector<FileInputStream>();
v.add(new FileInputStream("1.txt"));
v.add(new FileInputStream("2.txt"));
v.add(new FileInputStream("3.txt"));
Enumeration<FileInputStream> en = v.elements();
SequenceInputStream sis = new SequenceInputStream(en);
FileOutputStream fos = new FileOutputStream("4.txt");
byte[] buf = new byte[1024];
int len = 0;
while ((len = sis.read(buf))!= -1)
{
fos.write(buf,0,len);
}
fos.close();
sis.close();
}
}

切割文件
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class SplitFile {
public static void main(String[] args) throws IOException
{
splitFile();
}
public static void splitFile() throws IOException
{
FileInputStream fis = new FileInputStream("2.jpg");
FileOutputStream fos = null;
byte[] buf = new byte[1024*1024];
int len = 0;
int count = 1;
while ((len = fis.read(buf))!= -1)
{
fos = new FileOutputStream("splitfiles"+File.separator+(count++)+".part");
fos.write(buf,0,len);
fos.close();
}
fis.close();
}
}

合并文件
import java.io.*;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Iterator;
public class SplitFile {
public static void main(String[] args) throws IOException
{
merge();
}
public static void merge() throws IOException
{
ArrayList<FileInputStream> a1 = new ArrayList<FileInputStream>();
for (int x=1;x<=2;x++)
{
a1.add(new FileInputStream("splitfiles"+File.separator+x+".part"));
}
final Iterator<FileInputStream> it = a1.iterator();
Enumeration<FileInputStream> en = new Enumeration<FileInputStream>()
{
public boolean hasMoreElements()
{
return it.hasNext();
}
public FileInputStream nextElement()
{
return it.next();
}
};
SequenceInputStream sis = new SequenceInputStream(en);
FileOutputStream fos = new FileOutputStream("splitfiles"+File.separator+"0.jpg");
byte[] buf = new byte[1024];
int len = 0;
while ((len=sis.read(buf))!=-1)
{
fos.write(buf,0,len);
}
fos.close();
sis.close();
}
}
