org.apache.commons.io.input

## Class BufferedFileChannelInputStream

- java.lang.Object
- - java.io.InputStream
  - - org.apache.commons.io.input.BufferedFileChannelInputStream

- All Implemented Interfaces:
    Closeable, AutoCloseable

      public final class BufferedFileChannelInputStream
      extends InputStream

  `InputStream` implementation which uses direct buffer to read a file to avoid extra copy of data between Java and native memory which happens when using `BufferedInputStream`. Unfortunately, this is not something already available in JDK, `sun.nio.ch.ChannelInputStream` supports reading a file using NIO, but does not support buffering.

  To build an instance, use `BufferedFileChannelInputStream.Builder`.

  This class was ported and adapted from Apache Spark commit 933dc6cb7b3de1d8ccaf73d124d6eb95b947ed19 where it was called `NioBufferedFileInputStream`.

  See Also:
    `BufferedFileChannelInputStream.Builder`

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `BufferedFileChannelInputStream.Builder` Builds a new `BufferedFileChannelInputStream`.

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `int` | `available()`
    `static BufferedFileChannelInputStream.Builder` | `builder()` Constructs a new `BufferedFileChannelInputStream.Builder`.
    `void` | `close()`
    `int` | `read()`
    `int` | `read(byte[] b, int offset, int len)`
    `long` | `skip(long n)`

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

      `mark, markSupported, read, reset`

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

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

- - ### Method Detail

    - #### available

          public int available()
                        throws IOException

      Overrides:
        `available` in class `InputStream`
      Throws:
        `IOException`

    - #### builder

          public static BufferedFileChannelInputStream.Builder builder()

      Constructs a new `BufferedFileChannelInputStream.Builder`.
      Returns:
        a new `BufferedFileChannelInputStream.Builder`.

    - #### close

          public void close()
                     throws IOException

      Specified by:
        `close` in interface `Closeable`
      Specified by:
        `close` in interface `AutoCloseable`
      Overrides:
        `close` in class `InputStream`
      Throws:
        `IOException`

    - #### read

          public int read()
                   throws IOException

      Specified by:
        `read` in class `InputStream`
      Throws:
        `IOException`

    - #### read

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

      Overrides:
        `read` in class `InputStream`
      Throws:
        `IOException`

    - #### skip

          public long skip(long n)
                    throws IOException

      Overrides:
        `skip` in class `InputStream`
      Throws:
        `IOException`