典型的IO操作是以InputStream的read和OutputStream的wite(byte b)为标准,InputStream一次接收一个或多个字节,而OutputStream则一次写入一个或多个字节。
从JDK1.1开始又出现了以字符操作为标准的Reader和Write,Reader一次读取一个或多个字符,而Writer一次写入一个或多个字符。整个IO操作都是围绕这个主题展开的。
InputStream:
ByteArrayInputStream
FileInputStream
ObjectInputStream
PipedInputStream
SequenceInputStream
StringBufferInputStream,已过时,在旧版本中用以读取一个字节。已被Reader相应的子类代替
FilterInputStream
BufferedInputStream
......
OutputStream:
ByteArrayOutputStream
FilterOutputStream
BufferedOutputStream
......
FileOutputStream
ObjectOutputStream
PipedOutputStream
Reader:
BufferedReader
CharArrayReader
InputStreamReader
PipedReader
StringReader
Writer:
BufferedWriter
CharArrayWriter
OutputStreamWriter
PipedWriter
PrintWriter
StringWriter
1、InputStreamReader 是字节流InputStream通向字符流的桥梁,通过包装InputStream便可以以Reader的方式读取字符。
2、OutputStreamWriter 是字符流OutputStream通向字节流的桥梁,通过包装OutputStream便可以以Writer的方式写入字符。
3、FileInputStream和FileOutputStream是两个比较特别的类,这两个类分别持有InputStream的OutputStream的引用,通过装饰者模式,可以很方便地添加一些额外的功能。
BufferedInputStream和BufferedOutputStream便是这两个类的子类,提供了buffer能力,减少与物理设备的交互。
4、Reader与Writer可没有Stream那么复杂,BufferedReader和BufferedWriter,分别直接继承自Reader和Writer类。
5、Reader与Writer是以平台默认的编码来读取或写入字符的,需要指定编码时则使用InputStreamReader和OutputstreamWriter。
6、正是由于使用了装饰者模式,才造就了今天写IO代码时一层层包装的”不美观“。这一层层的包装并不需要特别记忆,都有它的特点。
当你需要使用基于字节流的文件流时 new FileInputStream,外层加一个BufferedInputStream减少与磁盘的交互,则成了InputStream = new BufferedInputStream(new FileInputStream()); OutputStream也同理;
当你需要使用基于字符流的文件流时 new FileReader,同样需要加buffer,则成为new BufferedReader(new FileReader())。需要特别指定编码时,则成为 new BufferedReader(new InputStreamReader(new FileInputStream(path),encoding));
7、InputStream、OutputStream、Reader、Writer均为抽象类
8、ObjectInputStream和ObjectOutputStream分别用于基本类型的读写操作。
分享到:
相关推荐
jdk源码, jdk源码 jdk源码, jdk源码, jdk源码, jdk源码 jdk源码 jdk源码 jdk源码
java JDK 源码java JDK 源码java JDK 源码java JDK 源码java JDK 源码java JDK 源码java JDK 源码
对于想了解JDK源码的朋友来说,通过调试JDK源码来学习是一个常用的方法。但是默认的情况下eclipse是不支持进入jdk源码中进行调试和显示当前变量的。 我们要明白在jdk中,sun对rt.jar中的类编译时,去除了调试信息,这样...
jdk源码(完整版)。最新最全的jdk源码,网上基本上都是阉割版的
jdk1.6 源码
JDK源码阅读笔记
jdk源码 完整可用,开发程序必备啊。
JDK源码阅读笔记
下载后直接去本机jdk目录里替换jdk中的src.zip 再打开idea就能看到中文版的源码注释 示例 https://blog.csdn.net/a7459/article/details/106495622
jdk源码+hotspot
jdk源码包
jdk 8u60 源码下载: 导入请阅读IMPORT_README Main: sun.misc.Launcher
jdk6 源码jdk6 源码jdk6 源码jdk6 源码jdk6 源码jdk6 源码
jdk源码jdk1.8.0_181,src源码文件
第一步:安装完jdk之后,打开jdk所在目录,里面有个src.zip,这就是此jdk的所有源码 第二步:找到之后我们开始导入,选中项目点击右键,选中Build Path栏中的Configure Build Path,在Libraries中我们打开JRE ...
压缩包中为JDK8的源码,在源码的注释下方附带的中文翻译,是本压缩包的亮点,下方为局部代码,示范给大家: * Sole constructor. Programmers cannot invoke this constructor. * It is for use by code emitted ...
JDK源码,JDK源码,JDK源码,JDK源码,JDK源码,JDK源码,JDK源码
JDK源码选读
JDK 源码 java
jdk8源码,供学习jdk源码的开发人员参考,阅读源码熟悉实现原理和思路。