Java IO流类继承关系及使用说明
2016-08-03 14:36
573 查看
Java IO类继承关系如下图:
一、InputStream与OutputStream是所有输入输出字节流的基类,Reader与Writer是所有输入输出字符流的基类。
二、节点流(介质流)
三、处理流(装饰流)
三、计算机储存数据的最终形式是二进制编码,八位为一字节。字节流是按字节读取,自然不牵涉到编码的问题。字符流按字符读取,而字符根据不同的编码集所占用的字节数与字符编码也不同。这也就关系到了编码的问题。
1、两个转换流InputStreamReader与OutputStreamWriter,将字节流转换为字符流,是字节流通向字符流的桥梁,使用指定的字符集读取字节并将其解码为字符。所以在它们的构造器参数当中是需要指定字符集的,如果没有指定,则以默认的系统字符集为准。
2、FileReader与FileWriter是与文件操作相关的两个字符节点流。文件一般以某种特定字符编码进行保存,现在要将它转换为字符流,那是肯定要指定字符编码集的。但是在它们的构造函数当中并没有要指定字符编码集的参数。官方的解析是此类的构造方法假定默认字符编码和默认字节缓冲区大小是适当的。要自己指定这些值,可以先在 FileInputStream 上构造一个 InputStreamReader。
3、数组节点流:CharArrayReader与CharArrayWriter,字符串节点流:StringReader和StringWriter。它们直接在内存中对字符数组与字符串进行的操作。在内存中默认的字符编码都为Unicode编码请查看Java内部编码过程也就不存在编码转换的问题。
4、缓冲流:BufferedReader与BufferedWriter,它们是对字符流进行的第二次包装,所以也不存在编码的问题。
本帖隐藏的内容
一、InputStream与OutputStream是所有输入输出字节流的基类,Reader与Writer是所有输入输出字符流的基类。
二、节点流(介质流)
父类 | InputStream | OutputStream | Reader | Writer |
文件 | FileInputStream | FileOutputStream | FileReader | FileWriter |
数组 | ByteArrayInputStream | ByteArrayOutputStream | CharArrayReader | CharArrayWriter |
字符串 | StringReader | StringWriter | ||
管道 | PipedInputStream | PipedOutputStream | PipedReader | PipedWriter |
父类 | InputStream | OutputStream | Reader | Writer |
转换流 | InputStreamReader | OutputStreamWriter | ||
缓冲流 | BufferedInputStream | BufferedOutputStream | BufferedReader | BufferedWriter |
数据流 | DataInputStream | DataOutputStream | ||
对象流 | ObjectInputStream | ObjectOutputStream | ||
打印流 | PrintStream | PrintWriter |
1、两个转换流InputStreamReader与OutputStreamWriter,将字节流转换为字符流,是字节流通向字符流的桥梁,使用指定的字符集读取字节并将其解码为字符。所以在它们的构造器参数当中是需要指定字符集的,如果没有指定,则以默认的系统字符集为准。
2、FileReader与FileWriter是与文件操作相关的两个字符节点流。文件一般以某种特定字符编码进行保存,现在要将它转换为字符流,那是肯定要指定字符编码集的。但是在它们的构造函数当中并没有要指定字符编码集的参数。官方的解析是此类的构造方法假定默认字符编码和默认字节缓冲区大小是适当的。要自己指定这些值,可以先在 FileInputStream 上构造一个 InputStreamReader。
3、数组节点流:CharArrayReader与CharArrayWriter,字符串节点流:StringReader和StringWriter。它们直接在内存中对字符数组与字符串进行的操作。在内存中默认的字符编码都为Unicode编码请查看Java内部编码过程也就不存在编码转换的问题。
4、缓冲流:BufferedReader与BufferedWriter,它们是对字符流进行的第二次包装,所以也不存在编码的问题。
相关文章推荐
- Java IO流类继承关系及使用说明
- Java IO流类继承关系及使用说明
- Java笔记——继承 && 静态成员使用说明
- Java 使用泛型 泛型之间继承关系
- java之finalize在继承关系中的使用
- Smack Connection 的继承关系和读写接口使用说明
- java 中继承关系中的super的使用
- Java举例说明 里氏代换原则[能使用父类型的地方一定能使用子类型]之继承异常捕获顺序
- 在CMD窗口中使用javac和java命令进行编译和执行带有包名的具有继承关系的类
- Smack Connection 的继承关系和读写接口使用说明
- 【Java基础知识】继承体系中的成员关系,this,super关键字的使用,数据初始化
- Java继承关系中,父类方法使用实例变量和调用实例方法的探究
- 使用webwork处理表单字段中的继承关系
- Berkeley DB Java Edition使用说明
- java中Timer使用的简要说明
- Ext 1.0 简要说明 类继承关系图
- 使用JAVA发送HTTP请求(Http Request),返回HTTP响应(Http Response)内容,代码程序例子及原理说明
- java使用AXIS调用.net的webservice的小说明(webservice方法里含有对象)
- Hibernate3 关系映射使用说明(一)
- Hibernate3 关系映射使用说明