- 所有父级接口:
AutoCloseable,ByteChannel,Channel,Closeable,ReadableByteChannel,WritableByteChannel
- 所有已知的实现类:
FileChannel
可搜索字节通道连接到一个实体,通常是一个文件,它包含一个可变长度的字节序列,可以读取和写入。当前位置可以是 queried 和 modified 。该通道还提供对当前size通道所连接的实体的名称。当写入的字节超出其当前大小时,大小会增加;当它是 truncated 时尺寸减小。
position 和 truncate 方法在其他方面没有要返回的值,它们被指定为返回调用它们的通道。这允许链接方法调用。此接口的实现应专门化返回类型,以便可以链接对实现类的方法调用。
- 自从:
- 1.7
- 参见:
-
方法总结
修饰符和类型方法描述longposition()返回此通道的位置。position(long newPosition) 设置此通道的位置。intread(ByteBuffer dst) 从此通道读取一系列字节到给定的缓冲区中。longsize()返回此通道连接到的实体的当前大小。truncate(long size) 将此通道连接到的实体截断为给定大小。intwrite(ByteBuffer src) 将给定缓冲区中的字节序列写入此通道。
-
方法详情
-
read
从此通道读取一系列字节到给定的缓冲区中。从该通道的当前位置开始读取字节,然后用实际读取的字节数更新该位置。否则此方法的行为与
ReadableByteChannel接口中指定的完全相同。- 指定者:
read在接口ReadableByteChannel中- 参数:
dst- 要将字节传输到的缓冲区- 返回:
-
读取的字节数,可能为零,如果通道已到达流末尾,则为
-1 - 抛出:
ClosedChannelException- 如果此通道关闭AsynchronousCloseException- 如果另一个线程在读取操作正在进行时关闭此通道ClosedByInterruptException- 如果另一个线程在读取操作正在进行时中断当前线程,从而关闭通道并设置当前线程的中断状态NonReadableChannelException- 如果这个通道没有打开阅读IOException- 如果发生其他 I/O 错误
-
write
将给定缓冲区中的字节序列写入此通道。字节从该通道的当前位置开始写入,除非该通道连接到实体(例如使用
APPEND选项打开的文件),在这种情况下,该位置首先前进到末尾。如有必要,通道连接到的实体会增长以容纳写入的字节,然后使用实际写入的字节数更新位置。否则,此方法的行为与WritableByteChannel接口所指定的完全相同。- 指定者:
write在接口WritableByteChannel中- 参数:
src- 要从中检索字节的缓冲区- 返回:
- 写入的字节数,可能为零
- 抛出:
ClosedChannelException- 如果此通道关闭AsynchronousCloseException- 如果另一个线程在写操作正在进行时关闭此通道ClosedByInterruptException- 如果另一个线程在写操作正在进行时中断当前线程,从而关闭通道并设置当前线程的中断状态NonWritableChannelException- 如果此通道未打开进行写入IOException- 如果发生其他 I/O 错误
-
position
返回此通道的位置。- 返回:
- 该通道的位置,一个非负整数,计算从实体开始到当前位置的字节数
- 抛出:
ClosedChannelException- 如果此通道关闭IOException- 如果发生其他 I/O 错误
-
position
设置此通道的位置。将位置设置为大于当前大小的值是合法的,但不会更改实体的大小。稍后尝试读取此类位置的字节将立即返回文件结束指示。稍后尝试在这样的位置写入字节将导致实体增长以容纳新字节;前一个文件结尾和新写入的字节之间的任何字节的值都是未指定的。
当连接到使用
APPEND选项打开的实体(通常是文件)时,不建议设置通道的位置。打开append时,位置先前进到末尾再写入。- 参数:
newPosition- 新位置,一个非负整数,从实体开始计算字节数- 返回:
- 这个通道
- 抛出:
ClosedChannelException- 如果此通道关闭IllegalArgumentException- 如果新位置为负IOException- 如果发生其他 I/O 错误
-
size
返回此通道连接到的实体的当前大小。- 返回:
- 当前大小,以字节为单位
- 抛出:
ClosedChannelException- 如果此通道关闭IOException- 如果发生其他 I/O 错误
-
truncate
将此通道连接到的实体截断为给定大小。如果给定的大小小于当前大小,则实体将被截断,并丢弃超出新末尾的任何字节。如果给定大小大于或等于当前大小,则实体不会被修改。在任何一种情况下,如果当前位置大于给定大小,则将其设置为该大小。
当连接到使用
APPEND选项打开的实体(通常是文件)时,此接口的实现可能会禁止截断。- 参数:
size- 新大小,非负字节数- 返回:
- 这个通道
- 抛出:
NonWritableChannelException- 如果此通道未打开进行写入ClosedChannelException- 如果此通道关闭IllegalArgumentException- 如果新尺寸为负IOException- 如果发生其他 I/O 错误
-