Most visited

Recently visited

Added in API level 24

SeekableByteChannel

public interface SeekableByteChannel
implements ByteChannel

java.nio.channels.SeekableByteChannel
Known Indirect Subclasses


A byte channel that maintains a current position and allows the position to be changed.

A seekable byte channel is connected to an entity, typically a file, that contains a variable-length sequence of bytes that can be read and written. The current position can be queried and modified. The channel also provides access to the current size of the entity to which the channel is connected. The size increases when bytes are written beyond its current size; the size decreases when it is truncated.

The position and truncate methods which do not otherwise have a value to return are specified to return the channel upon which they are invoked. This allows method invocations to be chained. Implementations of this interface should specialize the return type so that method invocations on the implementation class can be chained.

See also:

Summary

Public methods

abstract long position()

Returns this channel's position.

abstract SeekableByteChannel position(long newPosition)

Sets this channel's position.

abstract int read(ByteBuffer dst)

Reads a sequence of bytes from this channel into the given buffer.

abstract long size()

Returns the current size of entity to which this channel is connected.

abstract SeekableByteChannel truncate(long size)

Truncates the entity, to which this channel is connected, to the given size.

abstract int write(ByteBuffer src)

Writes a sequence of bytes to this channel from the given buffer.

Inherited methods

From interface java.nio.channels.ReadableByteChannel
From interface java.nio.channels.WritableByteChannel
From interface java.nio.channels.Channel
From interface java.io.Closeable
From interface java.lang.AutoCloseable

Public methods

position

Added in API level 24
long position ()

Returns this channel's position.

Returns
long This channel's position, a non-negative integer counting the number of bytes from the beginning of the entity to the current position
Throws
ClosedChannelException If this channel is closed
IOException If some other I/O error occurs

position

Added in API level 24
SeekableByteChannel position (long newPosition)

Sets this channel's position.

Setting the position to a value that is greater than the current size is legal but does not change the size of the entity. A later attempt to read bytes at such a position will immediately return an end-of-file indication. A later attempt to write bytes at such a position will cause the entity to grow to accommodate the new bytes; the values of any bytes between the previous end-of-file and the newly-written bytes are unspecified.

Parameters
newPosition long: The new position, a non-negative integer counting the number of bytes from the beginning of the entity
Returns
SeekableByteChannel This channel
Throws
ClosedChannelException If this channel is closed
IllegalArgumentException If the new position is negative
IOException If some other I/O error occurs

read

Added in API level 24
int read (ByteBuffer dst)

Reads a sequence of bytes from this channel into the given buffer.

Bytes are read starting at this channel's current position, and then the position is updated with the number of bytes actually read. Otherwise this method behaves exactly as specified in the ReadableByteChannel interface.

Parameters
dst ByteBuffer: The buffer into which bytes are to be transferred
Returns
int The number of bytes read, possibly zero, or -1 if the channel has reached end-of-stream
Throws
IOException

size

Added in API level 24
long size ()

Returns the current size of entity to which this channel is connected.

Returns
long The current size, measured in bytes
Throws
ClosedChannelException If this channel is closed
IOException If some other I/O error occurs

truncate

Added in API level 24
SeekableByteChannel truncate (long size)

Truncates the entity, to which this channel is connected, to the given size.

If the given size is less than the current size then the entity is truncated, discarding any bytes beyond the new end. If the given size is greater than or equal to the current size then the entity is not modified. In either case, if the current position is greater than the given size then it is set to that size.

Parameters
size long: The new size, a non-negative byte count
Returns
SeekableByteChannel This channel
Throws
NonWritableChannelException If this channel was not opened for writing
ClosedChannelException If this channel is closed
IllegalArgumentException If the new size is negative
IOException If some other I/O error occurs

write

Added in API level 24
int write (ByteBuffer src)

Writes a sequence of bytes to this channel from the given buffer.

Bytes are written starting at this channel's current position. The entity to which the channel is connected is grown, if necessary, to accommodate the written bytes, and then the position is updated with the number of bytes actually written. Otherwise this method behaves exactly as specified by the WritableByteChannel interface.

Parameters
src ByteBuffer: The buffer from which bytes are to be retrieved
Returns
int The number of bytes written, possibly zero
Throws
IOException

Hooray!