Я пытаюсь создать собственный FileChannel
a>, и я испытываю недостаток ясности из-за несоответствия в документации.
Документация для FileChannel.transferFrom(ReadableByteChannel src, long position, long count)
говорит,
Если заданная позиция больше текущего размера файла, байты не передаются.
Теперь, разве они не должны были сказать это вместо этого? :
«Если
position + count
больше текущего размера файла, то байты не передаются».
Причина, по которой я подозреваю, что это может быть ошибка в документации, заключается в следующем. В другом месте того же документа API, если файлу необходимо увеличиться, делается явное упоминание об этом, как в случае FileChannel.write(ByteBuffer src, long position)
:
«Если заданная позиция больше текущего размера файла, файл будет увеличен, чтобы вместить новые байты»;
Таким образом, если не упоминалось о росте файла в случае FileChannel.transferFrom()
, у меня создалось впечатление, что файл не должен увеличиваться с помощью этого метода. Но проблема в том, что файл может увеличиваться не только "если заданная позиция больше текущего размера файла", но и "если position + count
больше текущего размера файла" .