我们使用字节流对象输入输出时,不是java程序直接与硬盘“交流”的,java没有这么大的权限,java程序在jvm中运行,jvm与操作系统相关联,操作系统再与硬盘“交流”,当j我们想要访问硬盘中的数据的时候,为了避免与硬盘的交互次数,java为我们提供了缓冲区。
当我们调用BufferedInputStream的读取数据的方法时,会从它底层维护的数组读取数据。
当我们调用BufferedOutputStream写数据的时候,会先将数据往数组里写,当数组里存满了之后再手动调用刷新方法,才能将数组里的数据写到硬盘中去。
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class IoDemo {
public static void main(String[] args) throws IOException {
FileInputStream fi = new FileInputStream("e:/lishuai.txt");
BufferedInputStream b1 = new BufferedInputStream(fi);
FileOutputStream fo = new FileOutputStream("f:/lishuai.txt");
BufferedOutputStream b2 = new BufferedOutputStream(fo);
methord(fi, fo);
}
private static void methord(FileInputStream fi, FileOutputStream fo) throws IOException {
// TODO Auto-generated method stub
int len = 0;
byte[] b = new byte[1024];
while ((len = fi.read(b)) != -1) {
fo.write(b);
}
b1.close();
b2.close();
}
}
网友评论