- 所有已知实现类:
-
FileChannel
一个维护当前位置并允许更改位置的字节通道。
可寻址的字节通道连接到一个实体,通常是一个包含可读写的可变长度字节序列的文件。当前位置可以被查询
和修改
。该通道还提供对连接的实体的当前大小的访问。当写入超出当前大小时,大小会增加;当进行截断
时,大小会减小。
position
和truncate
方法在没有其他返回值的情况下被指定返回调用它们的通道。这允许方法调用被链接。该接口的实现应该专门化返回类型,以便可以链接对实现类的方法调用。
- 自从:
- 1.7
- 参见:
-
Method Summary
Modifier and TypeMethodDescriptionlong
position()
返回该通道的位置。position
(long newPosition) 设置该通道的位置。int
read
(ByteBuffer dst) 从该通道读取一系列字节到给定缓冲区中。long
size()
返回该通道连接的实体的当前大小。truncate
(long size) 截断连接的实体,即该通道连接的实体,到给定大小。int
write
(ByteBuffer src) 从给定缓冲区向该通道写入一系列字节。
-
Method Details
-
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
选项打开的情况下设置通道的位置。在打开以进行追加时,位置首先会被移动到末尾,然后再写入。- 参数:
-
newPosition
- 新位置,从实体开头计算的非负整数字节数 - 返回:
- 该通道
- 抛出:
-
ClosedChannelException
- 如果该通道已关闭 -
IllegalArgumentException
- 如果新位置为负数 -
IOException
- 如果发生其他I/O错误
-
size
返回该通道连接的实体的当前大小。- 返回:
- 当前大小,以字节为单位
- 抛出:
-
ClosedChannelException
- 如果该通道已关闭 -
IOException
- 如果发生其他I/O错误
-
truncate
截断连接的实体,即该通道连接的实体,到给定大小。如果给定大小小于当前大小,则截断实体,丢弃新末尾之外的任何字节。如果给定大小大于或等于当前大小,则不修改实体。在任一情况下,如果当前位置大于给定大小,则将其设置为该大小。
当连接到实体(通常是文件)并使用
APPEND
选项打开时,该接口的实现可能禁止截断。- 参数:
-
size
- 新大小,非负字节计数 - 返回:
- 该通道
- 抛出:
-
NonWritableChannelException
- 如果该通道未打开以进行写入 -
ClosedChannelException
- 如果该通道已关闭 -
IllegalArgumentException
- 如果新大小为负数 -
IOException
- 如果发生其他I/O错误
-