public interface SeekableByteChannel
implements ByteChannel
java.nio.channels.SeekableByteChannel |
Known Indirect Subclasses |
保持当前 位置并允许更改 位置的字节通道。
一个可寻找的字节通道连接到一个实体,通常是一个文件,它包含一个可读写的可变长度字节序列。 当前位置可以是queried
和modified
。 该通道还提供对通道连接到的实体的当前大小的访问。 当字节被写入超出其当前大小时,大小增加; 当它是truncated
时,尺寸减小。
指定不具有返回值的position
和truncate
方法以返回调用它们的通道。 这允许方法调用被链接。 这个接口的实现应该专注于返回类型,以便实现类的方法调用可以链接在一起。
Public methods |
|
---|---|
abstract long |
position() 返回此频道的位置。 |
abstract SeekableByteChannel |
position(long newPosition) 设置此频道的位置。 |
abstract int |
read(ByteBuffer dst) 从此通道读取一系列字节到指定的缓冲区中。 |
abstract long |
size() 返回此通道连接的实体的当前大小。 |
abstract SeekableByteChannel |
truncate(long size) 将此通道所连接的实体截断为给定大小。 |
abstract int |
write(ByteBuffer src) 从给定缓冲区中向此通道写入一个字节序列。 |
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
|
long 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 |
SeekableByteChannel position (long newPosition)
设置此频道的位置。
将位置设置为大于当前大小的值是合法的,但不会更改实体的大小。 稍后尝试在这样的位置读取字节将立即返回文件结束指示。 稍后尝试在这样的位置写入字节将导致实体增长以适应新的字节; 前一个文件结束和新写入的字节之间的任何字节值都是未指定的。
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 |
int read (ByteBuffer dst)
从此通道读取一系列字节到指定的缓冲区中。
从这个通道的当前位置开始读取字节,然后用实际读取的字节数更新位置。 否则,此方法的行为与ReadableByteChannel
接口中的规定完全相同。
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 |
long size ()
返回此通道连接的实体的当前大小。
Returns | |
---|---|
long |
The current size, measured in bytes |
Throws | |
---|---|
ClosedChannelException |
If this channel is closed |
IOException |
If some other I/O error occurs |
SeekableByteChannel truncate (long 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 |
int write (ByteBuffer src)
从给定缓冲区中向此通道写入一个字节序列。
字节从这个通道的当前位置开始写入。 如果需要,通道连接到的实体将生长以适应写入的字节,然后使用实际写入的字节数更新位置。 否则,此方法的行为与WritableByteChannel
接口所指定的WritableByteChannel
。
Parameters | |
---|---|
src |
ByteBuffer : The buffer from which bytes are to be retrieved |
Returns | |
---|---|
int |
The number of bytes written, possibly zero |
Throws | |
---|---|
IOException |