模块 java.base

接口 SeekableByteChannel

所有父级接口:
AutoCloseable , ByteChannel , Channel , Closeable , ReadableByteChannel , WritableByteChannel
所有已知的实现类:
FileChannel

public interface SeekableByteChannel extends ByteChannel
保持电流的字节通道position并允许更改位置。

可搜索字节通道连接到一个实体,通常是一个文件,它包含一个可变长度的字节序列,可以读取和写入。当前位置可以是 queried modified 。该通道还提供对当前size通道所连接的实体的名称。当写入的字节超出其当前大小时,大小会增加;当它是 truncated 时尺寸减小。

position truncate 方法在其他方面没有要返回的值,它们被指定为返回调用它们的通道。这允许链接方法调用。此接口的实现应专门化返回类型,以便可以链接对实现类的方法调用。

自从:
1.7
参见:
  • 方法总结

    修饰符和类型
    方法
    描述
    long
    返回此通道的位置。
    position(long newPosition)
    设置此通道的位置。
    int
    从此通道读取一系列字节到给定的缓冲区中。
    long
    size()
    返回此通道连接到的实体的当前大小。
    truncate(long size)
    将此通道连接到的实体截断为给定大小。
    int
    将给定缓冲区中的字节序列写入此通道。

    在接口 java.nio.channels.Channel 中声明的方法

    close, isOpen
  • 方法详情

    • read

      int read(ByteBuffer  dst) throws IOException
      从此通道读取一系列字节到给定的缓冲区中。

      从该通道的当前位置开始读取字节,然后用实际读取的字节数更新该位置。否则此方法的行为与 ReadableByteChannel 接口中指定的完全相同。

      指定者:
      read 在接口 ReadableByteChannel
      参数:
      dst - 要将字节传输到的缓冲区
      返回:
      读取的字节数,可能为零,如果通道已到达流末尾,则为 -1
      抛出:
      ClosedChannelException - 如果此通道关闭
      AsynchronousCloseException - 如果另一个线程在读取操作正在进行时关闭此通道
      ClosedByInterruptException - 如果另一个线程在读取操作正在进行时中断当前线程,从而关闭通道并设置当前线程的中断状态
      NonReadableChannelException - 如果这个通道没有打开阅读
      IOException - 如果发生其他 I/O 错误
    • write

      int write(ByteBuffer  src) throws IOException
      将给定缓冲区中的字节序列写入此通道。

      字节从该通道的当前位置开始写入,除非该通道连接到实体(例如使用 APPEND 选项打开的文件),在这种情况下,该位置首先前进到末尾。如有必要,通道连接到的实体会增长以容纳写入的字节,然后使用实际写入的字节数更新位置。否则,此方法的行为与 WritableByteChannel 接口所指定的完全相同。

      指定者:
      write 在接口 WritableByteChannel
      参数:
      src - 要从中检索字节的缓冲区
      返回:
      写入的字节数,可能为零
      抛出:
      ClosedChannelException - 如果此通道关闭
      AsynchronousCloseException - 如果另一个线程在写操作正在进行时关闭此通道
      ClosedByInterruptException - 如果另一个线程在写操作正在进行时中断当前线程,从而关闭通道并设置当前线程的中断状态
      NonWritableChannelException - 如果此通道未打开进行写入
      IOException - 如果发生其他 I/O 错误
    • position

      long position() throws IOException
      返回此通道的位置。
      返回:
      该通道的位置,一个非负整数,计算从实体开始到当前位置的字节数
      抛出:
      ClosedChannelException - 如果此通道关闭
      IOException - 如果发生其他 I/O 错误
    • position

      SeekableByteChannel  position(long newPosition) throws IOException
      设置此通道的位置。

      将位置设置为大于当前大小的值是合法的,但不会更改实体的大小。稍后尝试读取此类位置的字节将立即返回文件结束指示。稍后尝试在这样的位置写入字节将导致实体增长以容纳新字节;前一个文件结尾和新写入的字节之间的任何字节的值都是未指定的。

      当连接到使用 APPEND 选项打开的实体(通常是文件)时,不建议设置通道的位置。打开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 错误