org.apache.http.conn

## Class EofSensorInputStream

- java.lang.Object
- - java.io.InputStream
  - - org.apache.http.conn.EofSensorInputStream

- All Implemented Interfaces:
    Closeable ， AutoCloseable ， ConnectionReleaseTrigger

      public class EofSensorInputStream
      extends InputStream
      implements ConnectionReleaseTrigger

  一个流包装器，触发`close()`和EOF上的动作。 主要用于在响应主体消耗或不再需要时自动释放底层受管连接。
  从以下版本开始：
    4
  另请参见：
    `EofSensorWatcher`

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected InputStream` | `wrappedStream` 包装的输入流，同时可访问。

  - ### 构造方法摘要

    构造方法
    Constructor and Description
    `EofSensorInputStream(InputStream in, EofSensorWatcher watcher)` 创建一个新的EOF传感器。

  - ### 方法摘要

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `abortConnection()` 中止此流。
    `int` | `available()`
    `protected void` | `checkAbort()` 检测流中止并通知观察者。
    `protected void` | `checkClose()` 检测流关闭并通知观察者。
    `protected void` | `checkEOF(int eof)` 检测EOF并通知观察者。
    `void` | `close()`
    `protected boolean` | `isReadAllowed()` 检查底层流是否可以读取。
    `int` | `read()`
    `int` | `read(byte[] b)`
    `int` | `read(byte[] b, int off, int len)`
    `void` | `releaseConnection()` 与 `close()`相同。

    - ### Methods inherited from class java.io.InputStream

      `mark, markSupported, reset, skip`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### 字段详细信息

    - #### wrappedStream

          protected InputStream wrappedStream

      包装的输入流，同时可访问。 当包裹的流变得不可访问时，该值更改为`null` 。

  - ### 构造方法详细信息

    - #### EofSensorInputStream

          public EofSensorInputStream(InputStream in,
                              EofSensorWatcher watcher)

      创建一个新的EOF传感器。 如果没有观察者通过，则当检测到EOF或`close`被调用时，底层流将简单地关闭。 否则，观察者会决定在分离底层流之前应关闭底层流。
      参数
        `in` - 包裹流
        `watcher` - 事件的观察者，或 `null`自动关闭行为，不通知

  - ### 方法详细信息

    - #### isReadAllowed

          protected boolean isReadAllowed()
                                   throws IOException

      检查底层流是否可以读取。
      结果
        `true`如果底层流是可访问的， `false`如果这个流是处于EOF模式，并从底层流分离
      异常
        `IOException` - 如果此流已关闭

    - #### read

          public int read()
                   throws IOException

      Specified by:
        `read`在 `InputStream`
      异常
        `IOException`

    - #### read

          public int read(byte[] b,
                 int off,
                 int len)
                   throws IOException

      重写：
        `read`在 `InputStream`
      异常
        `IOException`

    - #### read

          public int read(byte[] b)
                   throws IOException

      重写：
        `read`在 `InputStream`
      异常
        `IOException`

    - #### available

          public int available()
                        throws IOException

      重写：
        `available`在 `InputStream`
      异常
        `IOException`

    - #### close

          public void close()
                     throws IOException

      Specified by:
        `close`在接口 `Closeable`
      Specified by:
        `close`在接口 `AutoCloseable`
      重写：
        `close`在 `InputStream`
      异常
        `IOException`

    - #### checkEOF

          protected void checkEOF(int eof)
                           throws IOException

      检测EOF并通知观察者。 只有当底层流仍然可访问时，才应该调用此方法。 使用`isReadAllowed`检查该条件。

      如果检测到EOF，则将通知观察者，并将该流与基础流分离。 这可以防止来自此流的多个通知。

      参数
        `eof` - 调用读操作的结果。 负值表示达到了EOF。
      异常
        `IOException` - 关闭底层流时出现IO问题

    - #### checkClose

          protected void checkClose()
                             throws IOException

      检测流关闭并通知观察者。 没有多少可以检测到，因为这是`close`调用 。 观察者只有在第一次关闭此流并且在检测到EOF之前才会被通知。 此流将与基础流分离，以防止对观察者发送多次通知。
      异常
        `IOException` - 关闭底层流时出现IO问题

    - #### checkAbort

          protected void checkAbort()
                             throws IOException

      检测流中止并通知观察者。 没有太多的检测，因为这是`abortConnection`调用 。 观察者只有在第一次中止此流，并且在检测到EOF或流优化`closed`之前才会被通知。 此流将与基础流分离，以防止对观察者发送多次通知。
      异常
        `IOException` - 关闭底层流时出现IO问题

    - #### releaseConnection

          public void releaseConnection()
                                 throws IOException

      与 `close()`相同。
      Specified by:
        `releaseConnection`在界面 `ConnectionReleaseTrigger`
      异常
        `IOException` - 在IO问题的情况下。 连接将会被释放。

    - #### abortConnection

          public void abortConnection()
                               throws IOException

      中止此流。 这是`close()`的特殊版本，防止重新使用底层连接（如果有的话）。 调用此方法表明在流结束之前不应该尝试读取。
      Specified by:
        `abortConnection`在接口 `ConnectionReleaseTrigger`
      异常
        `IOException` - 在出现IO问题的情况下。 连接将会被释放。

Copyright © 1999–2017 The Apache Software Foundation. All rights reserved.

本帮助文档是使用 《谷歌翻译》翻译，请与英文版配合使用 by--QQ:654638585