|
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 и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2013, Oracle и/или его филиалы. Все права защищены.
Проект сборка-b92