关于Java 字符流和字节流

来源:互联网 发布:鸟巢大棚建造数据 编辑:程序博客网 时间:2024/05/01 19:45
所有技术概念的问题都可以从它为什么要出现说起。
1 什么是流?为什么要出现流


我想,最早的时候:有电脑写些程序,然后再保存数据在硬盘上。那么程序可以操作这些数据(读取/写入),如果是我自己用什么样的方式来进行操作呢?我想那时候文件都不大,文件本质都是按照bit来存储,那么我读取,写入为什么不按照bit来读取/操作呢?最直接。然后程序和文件的当中数据传输应该就是流吧。(现在这个文件可以指文件,网络,各种硬件等)


2 为什么出现字节流?


1 文件不断变大,每次都是bit来处理变得反锁了。我要方便!

2 一个字节代表 8 bit,那么我们就按照字节来处理吧!于是,出现了字节流的处理方式。

3 java的字节流继承于两个类 InputStream OutputStream,只要看到带stream的类就是字节流,按照字节为一个单位来处理。


3 为什么出现字符流?


1 文件越来越大,字节流也变得好麻烦啊!

2 最早美国的英文字母编码是ASCII(一字节),之后出现了为了统一全部编码的Unicode(两字节)(目的是为了世界上所有字符都统一编码,1994年发布)

3 在1 的需求下和2 的背景条件下,出现了字符流的处理方式,他们按照一个字符一个字符去处理(16bit)。

4 java中所有字符流都继承与 Reader Writer,只要看到带Reader和Writer的类都是字符流,按照字符来处理。

5 其中FileReader 和FileWriter特别是对于文件的字符流处理。


4 为什么出现InputStreamReader 和 OutputStreamWriter?


1 心细可以发现,这两个特殊的类把字节流和字符流结合到了一起。

2 虽然编码格式是按照Unicode,但是存储格式没有统一(UTF,GBK32等),所以需要按照某个格式需要来读取/写入。

3 InputStreamReader 和OutputStreamWriter 都可以把一个字节流按照某个格式转换为字符流。方便的很。


5 之后的改进?


1 我们现在可以一个字符的来处理,可是字符的处理往往会出现有几个相同词就近连续处理,怎么样提高效率?

2 出现了缓存的需要。BufferedReader 和 PrintWriter 就应运而生。

3 他们提供了一个很好的方法 readLine 和 printLinde ,一行行来读取和写入!


6 再之后??


1 出现了ObjectReader 和ObjectWriter ,这个太强了,直接对类进行读取和写入!

2 原理的话和之前的都差不多。

7 其他?


大多数技术在知道了基本原理之后,就可以去看java的基础技术文档了。






0 0
原创粉丝点击