我正在尝试构建一个 custom FileChannel
,但由于文档不一致,我遇到了不清楚的问题。
该FileChannel.transferFrom(ReadableByteChannel src, long position, long count)
方法的文档说,
如果给定位置大于文件的当前大小,则不传输任何字节。
现在,他们不应该这样说吗?:
“如果
position + count
大于文件的当前大小,则不传输任何字节。”
我怀疑这可能是文档中的错误的原因是这个。在同一个 API 文档的其他地方,如果文件需要增长,则会明确提及它,例如FileChannel.write(ByteBuffer src, long position)
:
“如果给定的位置大于文件的当前大小,那么文件将被增长以容纳新的字节;”
因此,如果在 的情况下没有提到任何文件增长FileChannel.transferFrom()
,我会觉得文件不应该通过这种方法增长。但问题是,文件不仅可以增长“如果给定位置大于文件的当前大小”,还可以“如果position + count
大于文件的当前大小”。