# Class HeadBufferInputStream

java.lang.Object
java.io.InputStream
java.io.FilterInputStream
uk.ac.starlink.util.HeadBufferInputStream

All Implemented Interfaces:
  `Closeable, AutoCloseable`

public class HeadBufferInputStream extends FilterInputStream
Filter input stream that records the first few bytes read from its base stream for later examination.

Since:
  5 Aug 2015
Author:
  Mark Taylor

## Field Summary

### Fields inherited from class FilterInputStream

`in`

## Constructor Summary

Constructors
Constructor
Description
`HeadBufferInputStream(InputStream in, int headSize)`
Constructor.

## Method Summary

Modifier and Type
Method
Description
`byte[]`
`getHeadBuffer()`
Returns the actual buffer used for accumulating the first few bytes in the stream.
`long`
`getReadCount()`
Returns the total number of bytes so far read from the base stream.
`void`
`mark(int readlimit)`
`boolean`
`markSupported()`
Mark/reset is not supported.
`int`
`read()`
`int`
`read(byte[] b)`
`int`
`read(byte[] b, int off, int len)`
`void`
`reset()`
`long`
`skip(long n)`

### Methods inherited from class FilterInputStream

`available, close`

### Methods inherited from class InputStream

`nullInputStream, readAllBytes, readNBytes, readNBytes, skipNBytes, transferTo`

### Methods inherited from class Object

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

## Constructor Details

### HeadBufferInputStream

public HeadBufferInputStream(InputStream in, int headSize)
Constructor.

Parameters:
  `in` - base input stream
  `headSize` - size of head buffer

## Method Details

### getHeadBuffer

public byte[] getHeadBuffer()
Returns the actual buffer used for accumulating the first few bytes in the stream. If the read count is lower than the size of this buffer, not all the buffer has been filled.

Returns:
  buffer, same length as size supplied at construction time

### getReadCount

public long getReadCount()
Returns the total number of bytes so far read from the base stream.

Returns:
  byte read count

### read

public int read() throws IOException

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

### read

public int read(byte[] b) throws IOException

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

### read

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

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

### skip

public long skip(long n) throws IOException

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

### markSupported

public boolean markSupported()
Mark/reset is not supported.

Overrides:
  `markSupported` in class `FilterInputStream`

### reset

public void reset() throws IOException

Overrides:
  `reset` in class `FilterInputStream`
Throws:
  `IOException`

### mark

public void mark(int readlimit)

Overrides:
  `mark` in class `FilterInputStream`