zoukankan      html  css  js  c++  java
  • 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)、处理流可能提供一系列便捷的方法来一次输入/输出大批量的内容,而不是输入/输出一个或者多个”水滴“

  • 相关阅读:
    Vue,动画-修改v-前缀
    Vue,动画-使用过度类名实现动画(渐变)
    sqli-labs闯关之21-30关
    sqli-labs闯关之11-20关,第18关有burpsuit的具体使用方法
    sqli-labs闯关之1-10关
    sqli-labs的搭建
    DVWA-SQL注入
    华为NAT配置
    基础过滤工具——ACL控制访问列表(Access Control List)
    DHCP——基于接口地址的池的DHCP
  • 原文地址:https://www.cnblogs.com/tian2fei/p/3600107.html
Copyright © 2011-2022 走看看