APIdia Launch Partner
Top Description Methods
java.nio.channels

public Interface SeekableByteChannel

extends ByteChannel
Known Direct Implementers
java.nio.channels.FileChannel
Imports
java.nio.ByteBuffer, java.io.IOException

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.

Since
1.7
See Also
java.nio.file.Files#newByteChannel

Method Summary

Modifier and TypeMethod and Description
public long

Returns:

This channel's position, a non-negative integer counting the number of bytes from the beginning of the entity to the current position
position
()

Returns this channel's position.

public SeekableByteChannel

Returns:

This channel
position
(long
The new position, a non-negative integer counting the number of bytes from the beginning of the entity
newPosition
)

Sets this channel's position.

public int
read(ByteBuffer dst)

Redeclares java.nio.channels.ReadableByteChannel.read.

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

public long

Returns:

The current size, measured in bytes
size
()

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

public SeekableByteChannel

Returns:

This channel
truncate
(long
The new size, a non-negative byte count
size
)

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

public int
write(ByteBuffer src)

Redeclares java.nio.channels.WritableByteChannel.write.

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

Method Detail

positionback to summary
public long position() throws IOException

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

Exceptions
IOException:
If some other I/O error occurs
ClosedChannelException:
If this channel is closed
positionback to summary
public SeekableByteChannel position(long newPosition) throws IOException

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.

Setting the channel's position is not recommended when connected to an entity, typically a file, that is opened with the APPEND option. When opened for append, the position is first advanced to the end before writing.

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

Exceptions
IOException:
If some other I/O error occurs
ClosedChannelException:
If this channel is closed
IllegalArgumentException:
If the new position is negative
readback to summary
public int read(ByteBuffer dst) throws IOException

Redeclares java.nio.channels.ReadableByteChannel.read.

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.

Annotations
@Override
Exceptions
IOException:

Doc from java.nio.channels.ReadableByteChannel.read.

If some other I/O error occurs

ClosedChannelException:
If this channel is closed
AsynchronousCloseException:
If another thread closes this channel while the read operation is in progress
ClosedByInterruptException:
If another thread interrupts the current thread while the read operation is in progress, thereby closing the channel and setting the current thread's interrupted status
NonReadableChannelException:
If this channel was not opened for reading
sizeback to summary
public long size() throws IOException

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

Returns:long

The current size, measured in bytes

Exceptions
IOException:
If some other I/O error occurs
ClosedChannelException:
If this channel is closed
truncateback to summary
public SeekableByteChannel truncate(long size) throws IOException

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.

An implementation of this interface may prohibit truncation when connected to an entity, typically a file, opened with the APPEND option.

Parameters
size:long

The new size, a non-negative byte count

Returns:SeekableByteChannel

This channel

Exceptions
IOException:
If some other I/O error occurs
NonWritableChannelException:
If this channel was not opened for writing
ClosedChannelException:
If this channel is closed
IllegalArgumentException:
If the new size is negative
writeback to summary
public int write(ByteBuffer src) throws IOException

Redeclares java.nio.channels.WritableByteChannel.write.

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

Bytes are written starting at this channel's current position, unless the channel is connected to an entity such as a file that is opened with the APPEND option, in which case the position is first advanced to the end. 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.

Annotations
@Override
Exceptions
IOException:

Doc from java.nio.channels.WritableByteChannel.write.

If some other I/O error occurs

ClosedChannelException:
If this channel is closed
AsynchronousCloseException:
If another thread closes this channel while the write operation is in progress
ClosedByInterruptException:
If another thread interrupts the current thread while the write operation is in progress, thereby closing the channel and setting the current thread's interrupted status
NonWritableChannelException:
If this channel was not opened for writing