-
- All Superinterfaces:
-
AutoCloseable
,ByteChannel
,Channel
,Closeable
,ReadableByteChannel
,WritableByteChannel
- 所有已知实现类:
-
FileChannel
public interface SeekableByteChannel extends ByteChannel
-
-
方法摘要
所有方法 实例方法 抽象方法 变量和类型 方法 描述 long
position()
返回此频道的位置。SeekableByteChannel
position(long newPosition)
设置此通道的位置。int
read(ByteBuffer dst)
从该通道读取一个字节序列到给定的缓冲区。long
size()
返回此通道所连接的实体的当前大小。SeekableByteChannel
truncate(long size)
将此通道所连接的实体截断为给定大小。int
write(ByteBuffer src)
从给定缓冲区向该通道写入一个字节序列。
-
-
-
方法详细信息
-
read
int read(ByteBuffer dst) throws IOException
从该通道读取一个字节序列到给定的缓冲区。从该通道的当前位置开始读取字节,然后使用实际读取的字节数更新位置。 否则,此方法的行为与
ReadableByteChannel
接口中指定的完全相同 。- Specified by:
-
read
在接口ReadableByteChannel
- 参数
-
dst
- 要传输字节的缓冲区 - 结果
-
如果通道已到达流末尾,则读取的字节数(可能为零)或
-1
- 异常
-
ClosedChannelException
- 如果此频道已关闭 -
AsynchronousCloseException
- 如果另一个线程在读操作正在进行时关闭此通道 -
ClosedByInterruptException
- 如果另一个线程在读操作正在进行时中断当前线程,从而关闭通道并设置当前线程的中断状态 -
IOException
- 如果发生其他一些I / O错误
-
write
int write(ByteBuffer src) throws IOException
从给定缓冲区向该通道写入一个字节序列。字节从此通道的当前位置开始写入,除非通道连接到实体,例如使用
APPEND
选项打开的文件,在这种情况下,位置首先提前到结尾。 如果需要,增加信道所连接的实体以容纳写入的字节,然后用实际写入的字节数更新位置。 否则,此方法的行为与WritableByteChannel
接口指定的完全相同 。- Specified by:
-
write
在接口WritableByteChannel
- 参数
-
src
- 要从中检索字节的缓冲区 - 结果
- 写入的字节数,可能为零
- 异常
-
ClosedChannelException
- 如果此频道已关闭 -
AsynchronousCloseException
- 如果另一个线程在写入操作正在进行时关闭此通道 -
ClosedByInterruptException
- 如果另一个线程在写操作正在进行时中断当前线程,从而关闭通道并设置当前线程的中断状态 -
IOException
- 如果发生其他一些I / O错误
-
position
long position() throws IOException
返回此频道的位置。- 结果
- 此通道的位置,一个非负整数,计算从实体开头到当前位置的字节数
- 异常
-
ClosedChannelException
- 如果此渠道已关闭 -
IOException
- 如果发生其他一些I / O错误
-
position
SeekableByteChannel position(long newPosition) throws IOException
设置此通道的位置。将位置设置为大于当前大小的值是合法的,但不会更改实体的大小。 稍后尝试在这样的位置读取字节将立即返回文件结束指示。 稍后尝试在这样的位置写入字节将导致实体增长以适应新的字节; 未指定前一个文件结尾和新写入字节之间的任何字节的值。
连接到使用
APPEND
选项打开的实体(通常是文件)时,不建议设置通道的位置。 当打开追加时,该位置在写入之前首先进入结束。- 参数
-
newPosition
- 新位置,一个非负整数,用于计算实体开头的字节数 - 结果
- 这个频道
- 异常
-
ClosedChannelException
- 如果此渠道已关闭 -
IllegalArgumentException
- 如果新头寸为负数 -
IOException
- 如果发生其他一些I / O错误
-
size
long size() throws IOException
返回此通道所连接的实体的当前大小。- 结果
- 当前大小,以字节为单位
- 异常
-
ClosedChannelException
- 如果此频道已关闭 -
IOException
- 如果发生其他一些I / O错误
-
truncate
SeekableByteChannel truncate(long size) throws IOException
将此通道所连接的实体截断为给定大小。如果给定大小小于当前大小,则实体被截断,丢弃新端之外的任何字节。 如果给定大小大于或等于当前大小,则不修改实体。 在任何一种情况下,如果当前位置大于给定大小,则将其设置为该大小。
当连接到使用
APPEND
选项打开的实体(通常是文件)时,此接口的实现可能禁止截断。- 参数
-
size
- 新大小,非负字节数 - 结果
- 这个频道
- 异常
-
NonWritableChannelException
- 如果未打开此频道进行写入 -
ClosedChannelException
- 如果此频道已关闭 -
IllegalArgumentException
- 如果新大小为负数 -
IOException
- 如果发生其他一些I / O错误
-
-