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

  • 相关阅读:
    es之java插入优化(批量插入)
    es之java操作插入文档
    使用java操作elasticsearch之与es简历连接
    es之关于consistency(数据一致性问题)
    es之词库热更新解决方案
    es之IK分词器
    es之分词器和分析器
    es之Source字段和store字段
    Elasticsearch的聚合操作
    中缀表达式实现简单计算器
  • 原文地址:https://www.cnblogs.com/tian2fei/p/3600107.html
Copyright © 2011-2022 走看看