标签:
主要参考这篇文章http://blog.csdn.net/wong_judy/article/details/5267911
输入流 <--> 输出流
inputStream outputStream
reader writer
字节流 <--> 字符流
xxxStream reader/writer
节点流 <--> 装饰流
InputerStream FilterInputStream
总结
类太多了,根本记不住,所以归纳了以上几个比较不规范的规律
1.字符类的流通常都是使用Reader/Writer结尾,且都是他们的儿孙;
例外: (inputStreamReader/outputStreamWriter,这两个流的作用是 字节流-->字符流的桥接,我没找到反向的流,应该是没必要吧.)
2.字节流通常都是InputStream/OutputStream结尾,而且也都是他们的儿孙
例外太多了
3.使用流的时候基本思路是:
3.1使用节点流链接节点.
3.2使用装饰流装载节点流, (装饰流也可以装载装饰流,但是骨子里必须是节点流,这点应该好理解吧?)
3.3使用装饰流进行业务逻辑的处理
3.4用完之后直接关闭装饰流就可以了
4.装饰流的超类都是这两对的子孙
4.1 第一对: FilterReader/FilterWriter 字符的装饰流
4.2 第二对: FilterInputStream/FilterOutputStream 字节的装饰流
5.如果遇到某些字符流提供的方法未明确指出编码方式,那么它默认使用你当前项目的编码方式
6. 流的方式一般建议成对出现,以避免出现异常,比如xxxInputStream 那么请使用对应的xxxOutputStream,一般来说xxx是相同的,
如果没找到对应的,那么可以去思考一下自己的思路是否有误
还可以参考
http://www.ibm.com/developerworks/cn/java/j-lo-javaio/
标签:
原文地址:http://my.oschina.net/longfong/blog/492036