分享

【新提醒】Java IO流类继承关系及使用说明

 昵称15242507 2014-08-25

Java IO类继承关系如下图:

本帖隐藏的内容

Java IO流


一、InputStream与OutputStream是所有输入输出字节流的基类,Reader与Writer是所有输入输出字符流的基类。

二、节点流(介质流)

父类InputStream
OutputStreamReader
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,它们是对字符流进行的第二次包装,所以也不存在编码的问题。


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多