2015-12-31 3 views
0

Java FileChannel поддерживает запись из массива буферов в канал в записи записи с помощью int write (ByteBuffer [] src).Почему Java Gathering Write with Offset не существует?

Он, однако, не поддерживает эквивалент метода записи со смещением write (ByteBuffer src, длинная позиция). Кажется, что нет возможности делать запись в заданное смещение без блокировки канала, изменения положения, записи в эту позицию, а затем разблокировки канала.

Похоже, что java использует системный вызов writev для выполнения записи записи. Команда pwritev, по-видимому, выполняет именно то, что она хотела бы и ожидала от нее.

Есть ли веская причина, почему нет метода записи со смещением? Существуют ли библиотеки, которые это реализуют?

+0

Любопытный: Зачем вам это нужно? –

+0

Хотелось бы исключить копии буфера для производительности, используя сбор записей, но я пишу в смещение внутри файла, и блокировка канала при каждой записи может быть неприемлемой. – tvoss

ответ

0

Это does exist, но с дополнительным параметром, чтобы сделать его еще более общим.

+0

Несмотря на имена параметров, которые фактически не записываются в смещение внутри канала. Вместо этого указанное смещение относится к ** буферному массиву **, а не к позиции в канале для записи. – tvoss

 Смежные вопросы

  • Нет связанных вопросов^_^