BufferedInputStream
为另一个输入流添加一些功能,即缓冲输入以及支持 mark
和 reset
方法的能力。在创建 BufferedInputStream
时,会创建一个内部缓冲区数组。在读取或跳过流中的字节时,可根据需要从包含的输入流再次填充该内部缓冲区,一次填充多个字节。
这是摘录自API文档中的
BufferedOutputStream的跟BufferedInputStream基本类似,一个为写入一个为读出。
BufferedOutputStream带有一个刷新功能,与关闭一起使用。下面是一个简单的使用例子,通过
对文件的
写入和读出,实现了对文件的拷贝功能。
BufferedInputStream
方法摘要 | |
---|---|
int | available() 返回可以从此输入流读取(或跳过)、且不受此输入流接下来的方法调用阻塞的估计字节数。 |
void | close() 关闭此输入流并释放与该流关联的所有系统资源。 |
void | mark(int readlimit) 参见 InputStream 的 mark 方法的常规协定。 |
boolean | markSupported() 测试此输入流是否支持 mark 和 reset 方法。 |
int | read() 参见 InputStream 的 read 方法的常规协定。 |
int | read(byte[] b, int off, int len) 从此字节输入流中给定偏移量处开始将各字节读取到指定的 byte 数组中。 |
void | reset() 参见 InputStream 的 reset 方法的常规协定。 |
long | skip(long n) 参见 InputStream 的 skip 方法的常规协定。 |
构造方法摘要 | |
---|---|
BufferedInputStream(InputStream in) 创建一个 BufferedInputStream 并保存其参数,即输入流 in ,以便将来使用。 | |
BufferedInputStream(InputStream in, int size) 创建具有指定缓冲区大小的 BufferedInputStream 并保存其参数,即输入流 in ,以便将来使用。 |
另外在读取写入文件的时候要抛异常。
import java.io.*;
public class Buffered1 {
public static void main(String[] args){
BufferedInputStream bi = null;
FileInputStream fi = null;
BufferedOutputStream bo = null;
FileOutputStream fo = null;
try {
fi = new FileInputStream("E:\\haha\\class1.class");
fo = new FileOutputStream("E:\\class1.class");
bi = new BufferedInputStream(fi);
bo = new BufferedOutputStream(fo);
int next = 0;
while((next=bi.read())!=-1){
bo.write(next);
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
bi.close();
bo.flush();
bo.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}