org.apache.poi.poifs.filesystem

## Class DocumentInputStream

- java.lang.Object
- - java.io.InputStream
  - - org.apache.poi.poifs.filesystem.DocumentInputStream

- All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable, LittleEndianInput

      public final class DocumentInputStream
      extends java.io.InputStream
      implements LittleEndianInput

  This class provides methods to read a DocumentEntry managed by a `POIFSFileSystem` instance.

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `DocumentInputStream(DocumentEntry document)` Create an InputStream from the specified DocumentEntry
    `DocumentInputStream(POIFSDocument document)` Create an InputStream from the specified Document

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `int` | `available()`
    `void` | `close()`
    `void` | `mark(int ignoredReadlimit)`
    `boolean` | `markSupported()` Tests if this input stream supports the mark and reset methods.
    `int` | `read()`
    `int` | `read(byte[] b)`
    `int` | `read(byte[] b, int off, int len)`
    `byte` | `readByte()`
    `double` | `readDouble()`
    `void` | `readFully(byte[] buf)`
    `void` | `readFully(byte[] buf, int off, int len)`
    `int` | `readInt()`
    `long` | `readLong()`
    `void` | `readPlain(byte[] buf, int off, int len)` Usually acts the same as `LittleEndianInput.readFully(byte[], int, int)`, but for an encrypted stream the raw (unencrypted) data is filled
    `short` | `readShort()`
    `int` | `readUByte()`
    `long` | `readUInt()`
    `int` | `readUShort()`
    `void` | `reset()` Repositions this stream to the position at the time the mark() method was last called on this input stream.
    `long` | `skip(long n)`

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

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

- - ### Constructor Detail

    - #### DocumentInputStream

          public DocumentInputStream(DocumentEntry document)
                              throws java.io.IOException

      Create an InputStream from the specified DocumentEntry
      Parameters:
        `document` - the DocumentEntry to be read
      Throws:
        `java.io.IOException` - if the DocumentEntry cannot be opened (like, maybe it has been deleted?)

    - #### DocumentInputStream

          public DocumentInputStream(POIFSDocument document)

      Create an InputStream from the specified Document
      Parameters:
        `document` - the Document to be read

  - ### Method Detail

    - #### available

          public int available()

      Specified by:
        `available` in interface `LittleEndianInput`
      Overrides:
        `available` in class `java.io.InputStream`

    - #### close

          public void close()

      Specified by:
        `close` in interface `java.io.Closeable`
      Specified by:
        `close` in interface `java.lang.AutoCloseable`
      Overrides:
        `close` in class `java.io.InputStream`

    - #### markSupported

          public boolean markSupported()

      Tests if this input stream supports the mark and reset methods.
      Overrides:
        `markSupported` in class `java.io.InputStream`
      Returns:
        `true` always

    - #### mark

          public void mark(int ignoredReadlimit)

      Overrides:
        `mark` in class `java.io.InputStream`

    - #### read

          public int read()
                   throws java.io.IOException

      Specified by:
        `read` in class `java.io.InputStream`
      Throws:
        `java.io.IOException`

    - #### read

          public int read(byte[] b)
                   throws java.io.IOException

      Overrides:
        `read` in class `java.io.InputStream`
      Throws:
        `java.io.IOException`

    - #### read

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

      Overrides:
        `read` in class `java.io.InputStream`
      Throws:
        `java.io.IOException`

    - #### reset

          public void reset()

      Repositions this stream to the position at the time the mark() method was last called on this input stream. If mark() has not been called this method repositions the stream to its beginning.
      Overrides:
        `reset` in class `java.io.InputStream`

    - #### skip

          public long skip(long n)
                    throws java.io.IOException

      Overrides:
        `skip` in class `java.io.InputStream`
      Throws:
        `java.io.IOException`

    - #### readFully

          public void readFully(byte[] buf)

      Specified by:
        `readFully` in interface `LittleEndianInput`

    - #### readFully

          public void readFully(byte[] buf,
                                int off,
                                int len)

      Specified by:
        `readFully` in interface `LittleEndianInput`

    - #### readPlain

          public void readPlain(byte[] buf,
                                int off,
                                int len)

      Description copied from interface: `LittleEndianInput`
      Usually acts the same as `LittleEndianInput.readFully(byte[], int, int)`, but for an encrypted stream the raw (unencrypted) data is filled
      Specified by:
        `readPlain` in interface `LittleEndianInput`
      Parameters:
        `buf` - the byte array to receive the bytes
        `off` - the start offset into the byte array
        `len` - the amount of bytes to fill

    - #### readByte

          public byte readByte()

      Specified by:
        `readByte` in interface `LittleEndianInput`

    - #### readDouble

          public double readDouble()

      Specified by:
        `readDouble` in interface `LittleEndianInput`

    - #### readLong

          public long readLong()

      Specified by:
        `readLong` in interface `LittleEndianInput`

    - #### readShort

          public short readShort()

      Specified by:
        `readShort` in interface `LittleEndianInput`

    - #### readInt

          public int readInt()

      Specified by:
        `readInt` in interface `LittleEndianInput`

    - #### readUInt

          public long readUInt()

    - #### readUShort

          public int readUShort()

      Specified by:
        `readUShort` in interface `LittleEndianInput`

    - #### readUByte

          public int readUByte()

      Specified by:
        `readUByte` in interface `LittleEndianInput`

Copyright 2020 The Apache Software Foundation or its licensors, as applicable.