Package com.google.android.exoplayer2.upstream

## Interface DataReader

- All Known Subinterfaces:
    `DataSource`, `ExtractorInput`, `HttpDataSource`
  All Known Implementing Classes:
    `AesCipherDataSource`, `AssetDataSource`, `BaseDataSource`, `ByteArrayDataSource`, `CacheDataSource`, `ContentDataSource`, `CronetDataSource`, `DataSchemeDataSource`, `DefaultDataSource`, `DefaultExtractorInput`, `DefaultHttpDataSource`, `DummyDataSource`, `FakeDataSource`, `FakeExtractorInput`, `FileDataSource`, `ForwardingExtractorInput`, `OkHttpDataSource`, `PriorityDataSource`, `RawResourceDataSource`, `ResolvingDataSource`, `RtmpDataSource`, `StatsDataSource`, `TeeDataSource`, `UdpDataSource`

      public interface DataReader

  Reads bytes from a data stream.

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `int` | `read​(byte[] buffer, int offset, int length)` | Reads up to `length` bytes of data from the input.

- - ### Method Detail

    - #### read

          int read​(byte[] buffer,
                   int offset,
                   int length)
            throws IOException

      Reads up to `length` bytes of data from the input.

      If `readLength` is zero then 0 is returned. Otherwise, if no data is available because the end of the opened range has been reached, then `C.RESULT_END_OF_INPUT` is returned. Otherwise, the call will block until at least one byte of data has been read and the number of bytes read is returned.

      Parameters:
        `buffer` - A target array into which data should be written.
        `offset` - The offset into the target array at which to write.
        `length` - The maximum number of bytes to read from the input.
      Returns:
        The number of bytes read, or `C.RESULT_END_OF_INPUT` if the input has ended. This may be less than `length` because the end of the input (or available data) was reached, the method was interrupted, or the operation was aborted early for another reason.
      Throws:
        `IOException` - If an error occurs reading from the input.