Most visited

Recently visited

Added in API level 24

SeekableByteChannel

public interface SeekableByteChannel
implements ByteChannel

java.nio.channels.SeekableByteChannel
Known Indirect Subclasses


保持当前 位置并允许更改 位置的字节通道。

一个可寻找的字节通道连接到一个实体,通常是一个文件,它包含一个可读写的可变长度字节序列。 当前位置可以是queriedmodified 该通道还提供对通道连接到的实体的当前大小的访问。 当字节被写入超出其当前大小时,大小增加; 当它是truncated时,尺寸减小。

指定不具有返回值的positiontruncate方法以返回调用它们的通道。 这允许方法调用被链接。 这个接口的实现应该专注于返回类型,以便实现类的方法调用可以链接在一起。

也可以看看:

Summary

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

Public methods

position

Added in API level 24
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

position

Added in API level 24
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

read

Added in API level 24
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

size

Added in API level 24
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

truncate

Added in API level 24
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

write

Added in API level 24
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

Hooray!