Spec-Zone.ru › OpenJDK 8

Интерфейс GatheringByteChannel

Все суперинтерфейсы:
AutoCloseable, Канал, Closeable, WritableByteChannel
Все известные реализующие классы:
DatagramChannel, FileChannel, Pipe.SinkChannel, SocketChannel

public interface GatheringByteChannel
extends WritableByteChannel

Канал, который может записывать байты из последовательности буферов.

Операция сборки записи записывает в одном вызове последовательность байтов из одного или нескольких заданных буферов. Сборные записи часто полезны при реализации сетевых протоколов или форматов файлов, которые, например, группируют данные в сегменты, состоящие из одного или нескольких заголовков фиксированной длины, за которыми следует тело переменной длины. Аналогичные операции чтения разброса определены в интерфейсе ScatteringByteChannel.

С:
1.4

Методы

Модификатор и тип Метод и описание
long write(ByteBuffer[] srcs)

Записывает последовательность байтов в этот канал из заданных буферов.

long write(ByteBuffer[] srcs, int offset, int length)

Записывает последовательность байтов в этот канал из подпоследовательности заданных буферов.

Методы, унаследованные от интерфейса java.nio.channels.WritableByteChannel

write

Методы, унаследованные от интерфейса java.nio.channels.Канал

close, isOpen

Методы

write

long write(ByteBuffer[] srcs,
           int offset,
           int length)
    throws IOException

Записывает последовательность байтов в этот канал из подпоследовательности заданных буферов.

Предпринимается попытка записать до r байтов в этот канал, где r — общее количество байтов, оставшихся в указанной подпоследовательности заданного массива буферов, то есть,

srcs[offset].remaining()
    + srcs[offset+1].remaining()
    + ... + srcs[offset+length-1].remaining()
в момент вызова этого метода.

Предположим, что записана последовательность байтов длиной n, где 0 <= n <= r. До первых srcs[offset].remaining() байтов этой последовательности записываются из буфера srcs[offset], до следующих srcs[offset+1].remaining() байтов записываются из буфера srcs[offset+1], и так далее, пока вся последовательность байтов не будет записана. Максимальное возможное количество байтов записывается из каждого буфера, поэтому конечная позиция каждого обновленного буфера, кроме последнего обновленного буфера, гарантированно равна пределу этого буфера.

Если не указано иное, операция записи завершится только после записи всех r запрошенных байтов. Некоторые типы каналов, в зависимости от своего состояния, могут записать только некоторые байты или, возможно, ни одного. Например, сокет-канал в режиме неблокирующего режима не может записать больше байтов, чем свободно в буфере вывода сокета.

Этот метод может быть вызван в любое время. Однако, если другой поток уже инициировал операцию записи в этот канал, то вызов этого метода будет заблокирован до завершения первой операции.

Параметры:
srcs - Буферы, из которых извлекаются байты
offset - Смещение в массиве буферов первого буфера, из которого извлекаются байты; должно быть неотрицательным и не больше srcs.length
length - Максимальное количество буферов для доступа; должно быть неотрицательным и не больше srcs.length - offset
Возвращает:
Количество записанных байтов, возможно, ноль
Исключения:
IndexOutOfBoundsException - Если условия предварительной проверки для offset и length параметров не выполняются
NonWritableChannelException - Если этот канал не был открыт для записи
ClosedChannelException - Если этот канал закрыт
AsynchronousCloseException - Если другой поток закрывает этот канал во время выполнения операции записи
ClosedByInterruptException - Если другой поток прерывает текущий поток во время выполнения операции записи, тем самым закрывая канал и устанавливая состояние прерывания текущего потока
IOException - Если произошла какая-либо другая ошибка ввода-вывода

write

long write(ByteBuffer[] srcs)
    throws IOException

Записывает последовательность байтов в этот канал из заданных буферов.

Вызов этого метода в форме c.write(srcs) ведет себя точно так же, как вызов

c.write(srcs, 0, srcs.length);
Параметры:
srcs - Буферы, из которых извлекаются байты
Возвращает:
Количество записанных байтов, возможно, ноль
Исключения:
NonWritableChannelException - Если этот канал не был открыт для записи
ClosedChannelException - Если этот канал закрыт
AsynchronousCloseException - Если другой поток закрывает этот канал во время выполнения операции записи
ClosedByInterruptException - Если другой поток прерывает текущий поток во время выполнения операции записи, тем самым закрывая канал и устанавливая состояние прерывания текущего потока
IOException - Если произошла какая-либо другая ошибка ввода-вывода

© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API