Package org.apache.xmlgraphics.util.io
Class SubInputStream
- java.lang.Object
-
- java.io.InputStream
-
- java.io.FilterInputStream
-
- org.apache.xmlgraphics.util.io.SubInputStream
-
- All Implemented Interfaces:
java.io.Closeable
,java.lang.AutoCloseable
public class SubInputStream extends java.io.FilterInputStream
This class is a FilterInputStream descendant that reads from an underlying InputStream up to a defined number of bytes or the end of the underlying stream. Closing this InputStream will not result in the underlying InputStream to be closed, too.This InputStream can be used to read chunks from a larger file of which the length is known in advance.
-
-
Field Summary
Fields Modifier and Type Field Description private long
bytesToRead
Indicates the number of bytes remaining to be read from the underlying InputStream.private boolean
closeUnderlying
Indicates whether the underlying stream should be closed when theclose()
method is called.
-
Constructor Summary
Constructors Constructor Description SubInputStream(java.io.InputStream in, long maxLen)
Creates a new SubInputStream.SubInputStream(java.io.InputStream in, long maxLen, boolean closeUnderlying)
Creates a new SubInputStream.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
close()
int
read()
int
read(byte[] b, int off, int len)
long
skip(long n)
-
-
-
Field Detail
-
bytesToRead
private long bytesToRead
Indicates the number of bytes remaining to be read from the underlying InputStream.
-
closeUnderlying
private boolean closeUnderlying
Indicates whether the underlying stream should be closed when theclose()
method is called.
-
-
Constructor Detail
-
SubInputStream
public SubInputStream(java.io.InputStream in, long maxLen, boolean closeUnderlying)
Creates a new SubInputStream.- Parameters:
in
- the InputStream to read frommaxLen
- the maximum number of bytes to read from the underlying InputStream until the end-of-file is signalled.closeUnderlying
- true if the underlying stream should be closed when theclose()
method is called.
-
SubInputStream
public SubInputStream(java.io.InputStream in, long maxLen)
Creates a new SubInputStream. The underlying stream is not closed, when close() is called.- Parameters:
in
- the InputStream to read frommaxLen
- the maximum number of bytes to read from the underlying InputStream until the end-of-file is signalled.
-
-
Method Detail
-
read
public int read() throws java.io.IOException
- Overrides:
read
in classjava.io.FilterInputStream
- Throws:
java.io.IOException
-
read
public int read(byte[] b, int off, int len) throws java.io.IOException
- Overrides:
read
in classjava.io.FilterInputStream
- Throws:
java.io.IOException
-
skip
public long skip(long n) throws java.io.IOException
- Overrides:
skip
in classjava.io.FilterInputStream
- Throws:
java.io.IOException
-
close
public void close() throws java.io.IOException
- Specified by:
close
in interfacejava.lang.AutoCloseable
- Specified by:
close
in interfacejava.io.Closeable
- Overrides:
close
in classjava.io.FilterInputStream
- Throws:
java.io.IOException
-
-