Spec-Zone .ru
спецификации, руководства, описания, API
|
public interface ScatteringByteChannel extends ReadableByteChannel
Рассеивающаяся операция чтения читает, в единственном вызове, последовательности байтов в один или большем количестве данной последовательности буферов. Рассеивающиеся чтения часто полезны, реализовывая сетевые протоколы или форматы файлов что, например, групповые данные в сегменты, состоящие из одного или более заголовков фиксированной длины, сопровождаемых телом переменной длины. Подобные сборочные операции записи определяются в GatheringByteChannel
интерфейс.
Модификатор и Тип | Метод и Описание |
---|---|
long |
read(ByteBuffer[] dsts)
Читает последовательность байтов от этого канала в данные буферы.
|
long |
read(ByteBuffer[] dsts, int offset, int length)
Читает последовательность байтов от этого канала в подпоследовательность данных буферов.
|
читать
long read(ByteBuffer[] dsts, int offset, int length) throws IOException
Вызов этого метода пытается читать до r байтов из этого канала, где r является общим количеством байтов, остающихся указанной подпоследовательностью данного буферного массива, то есть,
в настоящее время то, что этот метод вызывается.dsts[offset].remaining() + dsts[offset+1].remaining() + ... + dsts[offset+length-1].remaining()
Предположите, что последовательность байта длины n читается, где 0 <= n <= r. До первых байтов dsts[offset].remaining() этой последовательности передаются в буферный dsts[offset], до следующего dsts[offset+1].remaining(), байты передаются в буферный dsts[offset+1], и т.д, пока вся последовательность байта не передается в данные буферы. Так много байтов насколько возможно передаются в каждый буфер, следовательно заключительная позиция каждого обновленного буфера, кроме последнее обновление буфера, как гарантируют, будет равна пределу того буфера.
В любое время может быть вызван этот метод. Если другой поток уже инициировал операцию чтения на этот канал, однако, то вызов этого метода блокирует, пока первая работа не полна.
dsts
- Буферы, в которые должны быть переданы байтыoffset
- Смещение в пределах буферного массива первого буфера, в который должны быть переданы байты; должно быть неотрицательным и не больше чем dsts.lengthlength
- Максимальное количество буферов, которые будут получены доступ; должно быть неотрицательным и не больше чем dsts.length - offsetIndexOutOfBoundsException
- Если предварительные условия на offset и параметрах length не содержатNonReadableChannelException
- Если этот канал не был открыт для того, чтобы читатьClosedChannelException
- Если этот канал закрываетсяAsynchronousCloseException
- Если другой поток закрывает этот канал, в то время как операция чтения происходитClosedByInterruptException
- Если другой поток прерывает текущий поток, в то время как операция чтения происходит, таким образом закрывая канал и устанавливая состояние прерывания текущего потокаIOException
- Если некоторая другая ошибка ввода-вывода происходитlong read(ByteBuffer[] dsts) throws IOException
Вызов этого метода формы c.read(dsts) ведет себя точно тем же самым способом как вызов
c.read(dsts, 0, dsts.length);
dsts
- Буферы, в которые должны быть переданы байтыNonReadableChannelException
- Если этот канал не был открыт для того, чтобы читатьClosedChannelException
- Если этот канал закрываетсяAsynchronousCloseException
- Если другой поток закрывает этот канал, в то время как операция чтения происходитClosedByInterruptException
- Если другой поток прерывает текущий поток, в то время как операция чтения происходит, таким образом закрывая канал и устанавливая состояние прерывания текущего потокаIOException
- Если некоторая другая ошибка ввода-вывода происходит
Для дальнейшей ссылки API и документации разработчика, см.
Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.