基础IO

1、 从数据传输方式看, 可以将 IO 分为

  1.1 字节流,  字节流读区单个字节(一个字符根据编码的不同,对应的字节也不同,如 UTF-8 编码中文汉字是 3 个字节,GBK编码中文汉字是 2 个字节。)

  1.2 字符流, 字节流用来处理二进制文件(图片、MP3、视频文件),字符流用来处理文本文件(可以看做是特殊的二进制文件,使用了某种编码,人可以阅读)

字节是计算机看的, 字符是给人看的。

   

 

 

 2、 从数据来源或操作对象角度看, IO 类可以分为:

 

 

3、 Java IO 设计上使用了 装饰者模式:  所谓装饰,就是吧这个装饰者套在被装饰者上,从而动态扩展被装饰者的功能。

  以 InputStream 为例:

    InputStream 是抽象组建

    FileInputStream 是 InputStream 的子类,属于具体组建,提供了字节流的输入操作;

    FilterInputStream 属于抽象装饰者,装饰者用于装饰组建,为组建提供额外的功能。 例如: BufferedInputStream 为 FileInputStream 提供缓存的功能。

 

 

   实例化一个具有缓存功能的字节流对象时,只需要在 FileInputStream 对象上再套一层 BufferedInputStream 对象即可

FileInputStream fileInputStream = new FileInputStream(filePath);
BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream);

  DataInputStream 装饰者提供了对更多数据类型进行输入的操作,比如 int、double 等基本类型。

posted @ 2022-08-08 17:57  长弓射大狗  阅读(23)  评论(0编辑  收藏  举报