• Java I/O随笔


    Java的I/O流的概念模型:

    Java I/O流共涉及40多个类,由4个抽象基类(InputStream/OutputStream  Writer/Reader)派生出:

          InputStream/Reader:所有输入流的基类,前者是字节输入流,后者是字符输入流。

          OutputStream/Writer:所有输出流的基类,前者是字节输出流,后者是字符输出流。

          对于InputStream/Reader而言,他们把输入设备抽象成一个“水管”,这个“水管”里的每一个“水滴”就是一个输入流,依次排列。如下图所示:

                              

         字节流和字符流的处理方式其实非常相似,只是他们处理的输入/输出单位不同而已。输入流使用隐式的记录指针来表示当前正准备从哪个“水滴”开始读取,每当程序从InputStream或Reader里读取一个或者多个“水滴”后,记录指针自动向后移动;除此之外,InputStream和Reader里都提供一些方法来控制记录指针的移动(如:reset()将此流的记录指针重新定位到上一次记录标记(mark())的位置;skip()记录指针向前移动n个字节、字符等)。

          对于OutputStream/Writer而言,他们同样把输入输出设备抽象成“水管”,只是这个水管里面没有任何水滴,如下图所示:

                               

          正如图所示,当执行输出时,程序相当于一次把”水滴“放入到水管中,输出流同样采用隐式指针来标识当前水滴即将放入的位置,每当程序向OutputStream/Writer里输出一个或者多个水滴之后,记录将自动向后移动。

    值得注意的是Java的I/O流是处理流而不是节点流,Java I/O采用处理流而不是节点流的原因:

        1)、主要以增加缓冲的方式来提高输入输出效率,从而提升性能

        2)、处理流可能提供一系列便捷的方法来一次输入/输出大批量的内容,而不是输入/输出一个或者多个”水滴“

  • 相关阅读:
    一、定义枚举类,并随机取值
    常用Linux日志查询命令
    一、爬虫之基础
    Jmeter接口自动化-3-生成HTML报告
    Jmeter接口自动化-2-查看结果数只能显示有限的数据,查看全部数据
    Jmeter接口自动化-1-启动报错:Could not initialize class org.apache.jmeter.gui.util.MenuFactory
    三十一、Java基础之Collection集合
    设计模式
    缓存
    Ckeditor配置
  • 原文地址:https://www.cnblogs.com/tian2fei/p/3600107.html
Copyright © 2020-2023  润新知