Package 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());

Since:
  2.12.0
See Also:
  - `MemoryMappedFileInputStream.Builder`

- ## Nested Class Summary

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

- ## Method Summary

  Modifier and Type
  Method
  Description
  `int`
  `available()`
  `static MemoryMappedFileInputStream.Builder`
  `builder()`
  Constructs a new `MemoryMappedFileInputStream.Builder`.
  `void`
  `close()`
  `int`
  `read()`
  `int`
  `read(byte[] b, int off, int len)`
  `long`
  `skip(long n)`

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

  `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 Details

  - ### builder

    public static MemoryMappedFileInputStream.Builder builder()
    Constructs a new `MemoryMappedFileInputStream.Builder`.
    Returns:
      a new `MemoryMappedFileInputStream.Builder`.
    Since:
      2.12.0

  - ### available

    public int available() throws IOException
    Overrides:
      `available` in class `InputStream`
    Throws:
      `IOException`

  - ### close

    public void close() throws IOException
    Specified by:
      `close` in interface `AutoCloseable`
    Specified by:
      `close` in interface `Closeable`
    Overrides:
      `close` in class `AbstractInputStream`
    Throws:
      `IOException`

  - ### 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`