2010-06-18 12:44:50.0
java对IO流进行分流
package org.richin.io.Stream.util;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
/**
* 对流进行分流,同时将一个输入流写入多个输出流
* @author Administrator
*
*/
public class TeeOutputStream extends OutputStream {
private OutputStream out1;
private OutputStream out2;
public TeeOutputStream(OutputStream stream1, OutputStream stream2)
{
//调用父类的构造方法,传入需要过滤的流
//super(stream1);
out1 = stream1;
out2 = stream2;
}
//重写write方法
public void write(int b) throws IOException
{
out1.write(b);
out2.write(b);
}
//重写write方法
public void write(byte[] data, int offset, int length) throws IOException
{
out1.write(data, offset, length);
out2.write(data, offset, length);
}
//重写flush方法
public void flush() throws IOException
{
out1.flush();
out2.flush();
}
//重写close方法
public void close() throws IOException
{
out1.close();
out2.close();
}
public static void copy(InputStream in, OutputStream out)
throws IOException {
// 缓冲流
BufferedInputStream bin = new BufferedInputStream(in);
BufferedOutputStream bout = new BufferedOutputStream(out);
while (true) {
int datum = bin.read();
if (datum == -1)
break;
bout.write(datum);
}
// 刷新缓冲区
bout.flush();
}
//main方法
public static void main(String[] args) throws IOException {
FileInputStream fin = new FileInputStream("E:\\gzml\\gongzhens\\yaxi\\设计稿\\快递.rar");
FileOutputStream fout1 = new FileOutputStream("D:/快递.rar");
FileOutputStream fout2 = new FileOutputStream("e:/快递.rar");
TeeOutputStream tout = new TeeOutputStream(fout1, fout2);
TeeOutputStream.copy(fin, tout);
fin.close();
tout.close();
}
}