Spec-Zone .ru
спецификации, руководства, описания, API
|
public interface GatheringByteChannel extends WritableByteChannel
Собирающаяся операция записи пишет, в единственном вызове, последовательности байтов от один или большем количестве данной последовательности буферов. Собирающиеся записи часто полезны, реализовывая сетевые протоколы или форматы файлов что, например, групповые данные в сегменты, состоящие из одного или более заголовков фиксированной длины, сопровождаемых телом переменной длины. Подобные операции чтения рассеивания определяются в ScatteringByteChannel
интерфейс.
Модификатор и Тип | Метод и Описание |
---|---|
long |
write(ByteBuffer[] srcs)
Пишет последовательность байтов к этому каналу от данных буферов.
|
long |
write(ByteBuffer[] srcs, int offset, int length)
Пишет последовательность байтов к этому каналу от подпоследовательности данных буферов.
|
записать
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.lengthlength
- Максимальное количество буферов, которые будут получены доступ; должно быть неотрицательным и не больше чем srcs.length - offsetIndexOutOfBoundsException
- Если предварительные условия на offset и параметрах length не содержатNonWritableChannelException
- Если этот канал не был открыт для того, чтобы записатьClosedChannelException
- Если этот канал закрываетсяAsynchronousCloseException
- Если другой поток закрывает этот канал, в то время как операция записи происходитClosedByInterruptException
- Если другой поток прерывает текущий поток, в то время как операция записи происходит, таким образом закрывая канал и устанавливая состояние прерывания текущего потокаIOException
- Если некоторая другая ошибка ввода-вывода происходитlong write(ByteBuffer[] srcs) throws IOException
Вызов этого метода формы c.write(srcs) ведет себя точно тем же самым способом как вызов
c.write(srcs, 0, srcs.length);
srcs
- Буферы, от которых должны быть получены байтыNonWritableChannelException
- Если этот канал не был открыт для того, чтобы записатьClosedChannelException
- Если этот канал закрываетсяAsynchronousCloseException
- Если другой поток закрывает этот канал, в то время как операция записи происходитClosedByInterruptException
- Если другой поток прерывает текущий поток, в то время как операция записи происходит, таким образом закрывая канал и устанавливая состояние прерывания текущего потокаIOException
- Если некоторая другая ошибка ввода-вывода происходит
Для дальнейшей ссылки API и документации разработчика, см.
Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.