Java缓冲区之输入输出流
--模范青蛙
下面我想通过一个例子来简单介绍一下流在缓冲区是怎么被读写的。
InputStream OutputStream Reader Writer都是抽象类,他们本身并没有实现多少方法,本身又为抽象类,我们无法创建他们的对象,只能使用多态来创建子类的对象。来实现具体的功能。
字符流的底层都是通过字节流来操作的,在这里只拿字节流的一个例子来分析一下。
所讲的内容完全是根据以下代码分析的,希望读者也能结合代码收看。
当编译器把Test_01.java编译过后,会生成一个Test_01.class文件,我们也通常称它为字节码文件,虚拟机启动时会把这个字节码文件加载到内存,至于是如何加载到内存的,我在另一篇文章中有详细的记录。http://download.csdn.net/detail/mo_fan_qing_wa/8990107在这里就不重复造轮子了。之后虚拟机会找到main(),按照这里面的代码,一步一步的执行。下面我们首先会看到一个try{}catch(){}语句,这是由于在创建对象时,需要指定创建文件的位置,如果指定的位置不存在,就会出现IOException异常,所以在整个步骤中,需要对IO异常进行try处理。下面看第二行代码:
InputStream in=new FileInputStream("d:\\a.java");//它的作用就是将d盘下的a.java文件封装成一个对象(in),在执行BufferedInputStream bin=new BufferedInputStream(in);第二行代码的时候,把这个对象(in)作为参数传入,BufferedInputStream 会通过内部的fill()方法和流对象in来填充它内部的缓冲区。
我们