org.apache.commons.io.input

## Class MemoryMappedFileInputStream

- java.lang.Object
- - java.io.InputStream
  - - org.apache.commons.io.input.AbstractInputStream
    - - org.apache.commons.io.input.MemoryMappedFileInputStream

- All Implemented Interfaces:
    Closeable, AutoCloseable

      public final class MemoryMappedFileInputStream
      extends AbstractInputStream

  An `InputStream` that utilizes memory mapped files to improve performance. A sliding window of the file is mapped to memory to avoid mapping the entire file to memory at one time. The size of the sliding buffer is configurable.

  For most operating systems, mapping a file into memory is more expensive than reading or writing a few tens of kilobytes of data. From the standpoint of performance. it is generally only worth mapping relatively large files into memory.

  Note: Use of this class does not necessarily obviate the need to use a `BufferedInputStream`. Depending on the use case, the use of buffering may still further improve performance. For example:

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

       BufferedInputStream s = new BufferedInputStream(new GzipInputStream(
         MemoryMappedFileInputStream.builder()
           .setPath(path)
           .setBufferSize(256 * 1024)
           .get()));

  should outperform:

       new GzipInputStream(new MemoryMappedFileInputStream(path))

       GzipInputStream s = new GzipInputStream(
         MemoryMappedFileInputStream.builder()
           .setPath(path)
           .setBufferSize(256 * 1024)
           .get());

  See Also:
    `MemoryMappedFileInputStream.Builder`

- - ### Nested Class Summary

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

  - ### Method Summary

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

    - ### Methods inherited from class org.apache.commons.io.input.AbstractInputStream

      `checkOpen, isClosed, setClosed`

    - ### 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 MemoryMappedFileInputStream.Builder builder()

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

    - #### close

          public void close()
                     throws IOException

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

    - #### getBufferSize

          int getBufferSize()

    - #### read

          public int read()
                   throws IOException

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

    - #### read

          public int read(byte[] b,
                          int off,
                          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`