BufferedInputStream和BufferedOutputStream

过滤流,需要使用已经存在的节点流来构造,提供带缓冲的读写,提高了读写的效率。BufferedInputStream派生自java.io.FilterInputStream,并不是InputStream。在后面将看到BufferedReader派生自Reader,而不是派生自FilterReader,这个可能是SUN公司在设计上的一个小bug吧!BufferedOutputStream的构造函数有BufferedOutputStream(OutputStream out),之所以说它需要一个已经存在的输入节点流,就是因为构造函数的参数类型是OutputStream,然而FileOutputStream派生自OutputStream。所以可以把FileOutputStream类型的对象放进去。

BufferedOutputStream

代码
import java.io.*;

public class StreamTest {
public static void main(String[] args) throws IOException {

String path
= System.getProperty("user.dir") + File.separator + "temp.txt";

File file
= new File(path);

OutputStream os
= new FileOutputStream(file);

OutputStream bufferedOutputStream
= new BufferedOutputStream(os);

bufferedOutputStream.write(
"BufferedOutputStream".getBytes());

bufferedOutputStream.flush();

bufferedOutputStream.close();


InputStream is
= new FileInputStream(file);

InputStream bufferedInputStream
= new BufferedInputStream(is);

byte[] buf = new byte[1024];

int len = bufferedInputStream.read(buf);// 将读到的字节放在字节数组中

int off = 0;// 从什么地方开始读取

String str
= new String(buf, off, len);

System.out.println(str.toUpperCase());

bufferedInputStream.close();
}
}

 

只需要将过滤流关闭就可以了。

 

遵从先打开的后关闭也可以。

posted @ 2010-12-23 20:37  meng72ndsc  阅读(2447)  评论(0编辑  收藏  举报