Java IO流类继承关系及使用说明
2015-07-14 11:30
513 查看
Java IO类继承关系如下图:
一、InputStream与OutputStream是所有输入输出字节流的基类,Reader与Writer是所有输入输出字符流的基类。
二、节点流(介质流)
三、处理流(装饰流)
三、计算机储存数据的最终形式是二进制编码,八位为一字节。字节流是按字节读取,自然不牵涉到编码的问题。字符流按字符读取,而字符根据不同的编码集所占用的字节数与字符编码也不同。这也就关系到了编码的问题。
1、两个转换流InputStreamReader与OutputStreamWriter,将字节流转换为字符流,是字节流通向字符流的桥梁,使用指定的字符集读取字节并将其解码为字符。所以在它们的构造器参数当中是需要指定字符集的,如果没有指定,则以默认的系统字符集为准。
2、FileReader与FileWriter是与文件操作相关的两个字符节点流。文件一般以某种特定字符编码进行保存,现在要将它转换为字符流,那是肯定要指定字符编码集的。但是在它们的构造函数当中并没有要指定字符编码集的参数。官方的解析是此类的构造方法假定默认字符编码和默认字节缓冲区大小是适当的。要自己指定这些值,可以先在 FileInputStream 上构造一个 InputStreamReader。
3、数组节点流:CharArrayReader与CharArrayWriter,字符串节点流:StringReader和StringWriter。它们直接在内存中对字符数组与字符串进行的操作。在内存中默认的字符编码都为Unicode编码请查看Java内部编码过程也就不存在编码转换的问题。
4、缓冲流:BufferedReader与BufferedWriter,它们是对字符流进行的第二次包装,所以也不存在编码的问题。
转自:http://www.360doc.com/content/14/0825/10/15242507_404445178.shtml
本帖隐藏的内容
一、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,它们是对字符流进行的第二次包装,所以也不存在编码的问题。
转自:http://www.360doc.com/content/14/0825/10/15242507_404445178.shtml
相关文章推荐
- 链表逆置For Java
- MyEclipse新手配置集合
- Android 之 Eclipse没法生成R文件
- 第一周第一天([用文档编辑Java并运行] [Java中数据类型的转换][标题的使用] [引用的使用] [代码块的使用] [图片的使用] [JDK] [Eclipse])
- java 关键字之Transient
- springmvc配置多访问方法
- java之ArrayList源码解析
- java 视频转码
- UEditor1.43 springMVC 上传图片 配置文件初始化失败
- java中使用protobuf
- SpringMVC实战(三种控制器方式)
- Failed to load JavaHL Library解决方法
- Java中Runnable和Thread的区别
- JavaCodeTra 猴子选猴王 约瑟夫循环
- java之字符串的排序
- java构造函数加载
- 安装nutch--JAVA_HOME环境变量的配置
- idea14怎么导出java文档
- Spring MVC 解读——@Autowired
- (LeetCode)用两个栈实现一个队列