Java之IO(十三)File、Filter、Piped、String和InputStreamReader与OutputStreamWriter
转载请注明原出处:http://www.cnblogs.com/lighten/p/7264196.html
1.前言
断更一段时间,计划果然赶不上变化(还是太懒...)。这次一次性将剩余的5组字符流说完,原本也没有什么值得一说的了,再花两节描述完整个IO包的相关剩余内容和总结,就结束这一章节的学习了。看源代码可以将一些似是而非的不明之处明确,所以还是很有必要的。
2.Filter
FilterReader和FilterWriter没有任何值得一提的地方,只是包装了一下所接受持有的其它Reader和Writer,然后调用其相关接口定义的方法而已。是一个抽象父类,比起字节流的Filter相关内,字符流的没有起到什么作用,实现类也少。
3.InputStreamReader和OutputStreamWriter
这两个类原本是应该好好讲一下的,但是由于其实现实际上是借助了StreamDecoder和StreamEncoder这两个同样继承自Reader和Writer的类,InputStreamReader和OutputStreamWriter也就是调用了其类的相关方法。在初始化的时候,通过其静态方法,接受一个字节流产生对应的StreamDecoder和StreamEncoder。由于这两个类是sun包下,无法看到源代码,也就没什么可说的(还是懒),不过作用应该就是对字节按照指定的编码方式进行编码成字符。
4.File
FileReader和FileWriter就是继承自上述的InputStreamReader和OutputStreamWriter,里面传递的是创建的一个文件字符流。整个过程其实是通过StreamDecoder和StreamEncoder包装文件的字节流,将其内容转换成字符。其它的也没什么。
5.Piped
管道字符流和管道字节流几乎一模一样,就是一个char和byte的区别。直接看前面所讲的管道字节流的相关内容就可以了。这里不再阐述。
6.String
StringReader和StringWriter的作用和CharArrayReader和CharArrayWriter基本一样,不过一个接收字符数组,一个接收字符串罢了,其它的没什么区别。和ByteArray字节流作用一致。