Interface Input
- All Superinterfaces:
AutoCloseable
,Closeable
- All Known Implementing Classes:
ChannelInput
,StreamInput
CryptoInputStream
so that different implementation of input can
be used. The implementation Input interface will usually wraps an input
mechanism such as InputStream
or
ReadableByteChannel
.-
Method Summary
Modifier and TypeMethodDescriptionint
Returns an estimate of the number of bytes that can be read (or skipped over) from this input without blocking by the next invocation of a method for this input stream.void
close()
Closes this input and releases any system resources associated with the under layer input.int
read
(long position, byte[] buffer, int offset, int length) Reads up to the specified number of bytes from a given position within a stream and return the number of bytes read.int
read
(ByteBuffer dst) Reads a sequence of bytes from input into the given buffer.void
seek
(long position) Seeks to the given offset from the start of the stream.long
skip
(long n) Skips over and discardsn
bytes of data from this input Theskip
method may, for a variety of reasons, end up skipping over some smaller number of bytes, possibly0
.
-
Method Details
-
available
Returns an estimate of the number of bytes that can be read (or skipped over) from this input without blocking by the next invocation of a method for this input stream. The next invocation might be the same thread or another thread. A single read or skip of this many bytes will not block, but may read or skip fewer bytes.It is never correct to use the return value of this method to allocate a buffer intended to hold all data in this stream.
- Returns:
- an estimate of the number of bytes that can be read (or skipped
over) from this input stream without blocking or
0
when it reaches the end of the input stream. - Throws:
IOException
- if an I/O error occurs.
-
close
Closes this input and releases any system resources associated with the under layer input.- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- Throws:
IOException
- if an I/O error occurs.
-
read
Reads a sequence of bytes from input into the given buffer.An attempt is made to read up to r bytes from the input, where r is the number of bytes remaining in the buffer, that is,
dst.remaining()
, at the moment this method is invoked.Suppose that a byte sequence of length n is read, where
0
<=
n<=
r. This byte sequence will be transferred into the buffer so that the first byte in the sequence is at index p and the last byte is at index p+
n-
1
, where p is the buffer's position at the moment this method is invoked. Upon return the buffer's position will be equal to p+
n; its limit will not have changed.- Parameters:
dst
- The buffer into which bytes are to be transferred.- Returns:
- the total number of bytes read into the buffer, or
-1
if there is no more data because the end of the stream has been reached. - Throws:
IOException
- If some other I/O error occurs.
-
read
Reads up to the specified number of bytes from a given position within a stream and return the number of bytes read. This does not change the current offset of the stream and is thread-safe. An implementation may not support positioned read. If the implementation doesn't support positioned read, it throws UnsupportedOperationException.- Parameters:
position
- the given position within a stream.buffer
- the buffer into which the data is read.offset
- the start offset in array buffer.length
- the maximum number of bytes to read.- Returns:
- the total number of bytes read into the buffer, or
-1
if there is no more data because the end of the stream has been reached. - Throws:
IOException
- if an I/O error occurs.
-
seek
Seeks to the given offset from the start of the stream. The next read() will be from that location. An implementation may not support seek. If the implementation doesn't support seek, it throws UnsupportedOperationException.- Parameters:
position
- the offset from the start of the stream.- Throws:
IOException
- if an I/O error occurs.
-
skip
Skips over and discardsn
bytes of data from this input Theskip
method may, for a variety of reasons, end up skipping over some smaller number of bytes, possibly0
. This may result from any of a number of conditions; reaching end of file beforen
bytes have been skipped is only one possibility. The actual number of bytes skipped is returned. Ifn
is negative, no bytes are skipped.The
skip
method of this class creates a byte array and then repeatedly reads into it untiln
bytes have been read or the end of the stream has been reached. Subclasses are encouraged to provide a more efficient implementation of this method. For instance, the implementation may depend on the ability to seek.- Parameters:
n
- the number of bytes to be skipped.- Returns:
- the actual number of bytes skipped.
- Throws:
IOException
- if the stream does not support seek, or if some other I/O error occurs.
-