史上最骚最全最详细的IO流教程,没有之一( 六 )


IO异常的处理
我们在学习的过程中可能习惯把异常抛出,而实际开发中并不能这样处理,建议使用try...catch...finally 代码块,处理异常部分,格式代码如下:
如果对异常不是特别熟练的童鞋可以参考这篇文章【java基础之异常】死了都要try,不淋漓尽致地catch我不痛快!
好了,到这里,字符流Reader和Writer的故事的到这里了!
前面主要写了一些基本的流作为IO流的入门 。从这里开始将要见识一些更强大的流 。比如能够高效读写的缓冲流,能够转换编码的转换流,能够持久化存储对象的序列化流等等,而这些强大的流都是在基本的流对象基础之上而来的!这些强大的流将伴随着我们今后的开发!
1、缓冲流【掌握】1.1 简要概述
首先我们来认识认识一下缓冲流,也叫高效流,是对4个FileXxx 流的“增强流” 。
缓冲流的基本原理:

1、使用了底层流对象从具体设备上获取数据,并将数据存储到缓冲区的数组内 。
2、通过缓冲区的read()方法从缓冲区获取具体的字符数据,这样就提高了效率 。
3、如果用read方法读取字符数据,并存储到另一个容器中,直到读取到了换行符时,将另一个容器临时存储的数据转成字符串返回,就形成了readLine()功能 。
也就是说在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次数,从而提高读写的效率 。
缓冲书写格式为BufferedXxx,按照数据类型分类:
  • 字节缓冲流:BufferedInputStream,BufferedOutputStream
  • 字符缓冲流:BufferedReader,BufferedWriter
1.2 字节缓冲流
构造方法
  • public BufferedInputStream(InputStream in) :创建一个新的缓冲输入流,注意参数类型为InputStream 。
  • public BufferedOutputStream(OutputStream out): 创建一个新的缓冲输出流,注意参数类型为OutputStream 。
构造举例代码如下:
感受缓冲流的高效
缓冲流读写方法与基本的流是一致的,我们通过复制370多MB的大文件,测试它的效率 。
  1. 基本流,代码如下:
  1. 缓冲流,代码如下:
有的童鞋就要说了,我要更快的速度!最近看速度与激情7有点上头,能不能再快些?答案是当然可以
想要更快可以使用数组的方式,代码如下:
1.3 字符缓冲流
构造方法
相同的来看看其构造,其格式以及原理和字节缓冲流是一样一样的!
  • public BufferedReader(Reader in) :创建一个新的缓冲输入流,注意参数类型为Reader 。
  • public BufferedWriter(Writer out): 创建一个新的缓冲输出流,注意参数类型为Writer 。
构造举例,代码如下:
字符缓冲流特有方法
字符缓冲流的基本方法与普通字符流调用方式一致,这里不再阐述,我们来看字符缓冲流具备的特有方法 。
  • BufferedReader:public String readLine(): 读一行数据 。读取到最后返回null
  • BufferedWriter:public void newLine(): 换行,由系统属性定义符号 。
readLine方法演示代码如下:
newLine方法演示代码如下:
1.4 字符缓冲流练习
字符缓冲流练习啥捏?先放松一下吧各位,先欣赏欣赏我写的下面的诗篇
6.你说你的程序叫简单,我说我的代码叫诗篇
1.一想到你我就哦豁豁豁豁豁豁豁豁豁豁....哦nima个头啊,完全不理人家受得了受不了
8.Just 简单你和我,Just 简单程序员
3.约了地点却忘了见面,懂得寂寞才明白浩瀚
5.沉默是最大的发言权
2.总是喜欢坐在电脑前,总是喜欢工作到很晚
7.向左走 又向右走,我们转了好多的弯
4.你从来就不问我,你还是不是那个程序员
欣赏完了咩?没错咋们就练习如何使用缓冲流的技术把上面的诗篇归顺序,都编过号了~就是前面的1到8的编号~
分析:首先用字符输入缓冲流创建个源,里面放没有排过序的文字,之后用字符输出缓冲流创建个目标接收,排序的过程就要自己写方法了哦,可以从每条诗词的共同点“.”符号下手!
代码实现
运行效果
2、转换流【掌握】何谓转换流?为何由来?暂时带着问题让我们先来了解了解字符编码和字符集!
 
史上最骚最全最详细的IO流教程,没有之一

文章插图
 
2.1 字符编码与解码
众所周知,计算机中储存的信息都是用二进制数表示的,而我们在屏幕上看到的数字、英文、标点符号、汉字等字符是二进制数转换之后的结果 。按照某种规则,将字符存储到计算机中,称为编码  。反之,将存储在计算机中的二进制数按照某种规则解析显示出来,称为解码 。比如说,按照A规则存储,同样按照A规则解析,那么就能显示正确的文本符号 。反之,按照A规则存储,再按照B规则解析,就会导致乱码现象 。


推荐阅读