看了楼主的提问,发现自己从来没有想过这个问题。所以,试着解决。首先,有人说用管道,Piped系列类不适用于解决这个问题的。Piped系列类是为多线程IO传输提供了一个比较简单的实现--内置了自动阻塞的功能。接下来查找资料,试着将Input和Output连接,后无望。看看下面的代码: /* * 功能: * 作者: JohnWoo * 日期: 2005-7-8 */ package javaio;import java.io.*;public class TestIO { public TestIO() { super(); } public static void main(String[] args) { File in = new File("C:/test1.txt" ); File out = new File( "C:/test2.txt" ); byte data[] = new byte[1024];
try { RandomAccessFile file = new RandomAccessFile( in,"r" ); FileOutputStream os = new FileOutputStream( out ); BufferedOutputStream bs = new BufferedOutputStream( os ); while( file.read( data ) != -1 ) { bs.write( data ); } bs.close(); file.close();
/*
* 功能:
* 作者: JohnWoo
* 日期: 2005-7-8
*/
package javaio;import java.io.*;public class TestIO { public TestIO() {
super();
} public static void main(String[] args) {
File in = new File("C:/test1.txt" );
File out = new File( "C:/test2.txt" ); byte data[] = new byte[1024];
try {
RandomAccessFile file = new RandomAccessFile( in,"r" );
FileOutputStream os = new FileOutputStream( out );
BufferedOutputStream bs = new BufferedOutputStream( os );
while( file.read( data ) != -1 ) {
bs.write( data );
}
bs.close();
file.close();
}catch(IOException ex) {
System.out.println("IOException" );
}
}
}其实,前面定义的byte data[],既是连接Input和Output的通道,我们也可以叫他缓存。大家也都知道。基于此,我们开发一个连接input和output的连接类也就不难了。其中,也就可以按照自己的要求处理缓存中的数据了。
甚至我们可以实现多线程中的自动阻塞功能,就像Piped系列类。花了一个多小时,好歹也要在这里罗嗦罗嗦。知识匮乏,内容不免简单空洞,见谅。^_^想不到更好的解决方法,静待高手。
楼主可以去看看
就是文件流那一章