Java IO 输入输出流的理解 1

来源:互联网 发布:Js键盘控制大小图切换 编辑:程序博客网 时间:2024/04/28 02:54

首先就要理解下流的概念:

流就是从源地点到目的地的字符序列。一种是字节流,传递的是1个1个的字节,读写最小单元是字节。

另一种就是字符流,它处理的是unicode字符。因为处理汉字的时候,一个一个字节那么传的话会出现问题。因为JAVA种 汉字占两个字节,按字节流传递和接受的话 ,可能会出现乱码 。

如果用unicode字符流传递英文的话 ,无形当中就会浪费一半的空间,因为英文字符只需要1个字节。所以如果需要存储中文则需要用到字符输入输出流。

字节流则包括InputStream 和  OutputStream   而字符流则对应的是reader 和 writer。

对InputStream来说 ,查看它的API得知它是abstract类,并且有很多种应用类型的类来继承它:

如果我们要读取文件,则我们要用到FileInputstream

如果我们要读写对象,我们用ObjectInputStream

读写字节数组,则用到ByteArrayInputStrem,是用来读取内存当中的字节数组

等等。。。

在刘老师的视频中有这样的 Inputstream类的层次图:


其中 常有的比如DataInputStream是帮助我们呢读取平时常用的基本数据类型的数据。 BufferedInputStream是来帮助我们增加缓冲的功能,能帮助我们提高速率。因为IO嘛。就像吃口饭就去锅里再盛一样, 碗的作用就好比缓冲区。如果是从内存中读取某些数据,那么就要用到字节数组输入流ByteArrayInputStream

OutputStream,在刘老师的视频里的层次结构如图:


这里的printStream是格式化输出,可以输出到屏幕上或客户端浏览器。 

缓冲区的 大小默认是512Byte