Интерфейс ReadableByteChannel
- Все суперинтерфейсы:
AutoCloseable, Channel, Closeable
- Все известные подинтерфейсы:
ByteChannel, ScatteringByteChannel, SeekableByteChannel
- Все известные реализующие классы:
DatagramChannel, FileChannel, Pipe.SourceChannel, SocketChannel
public interface ReadableByteChannel extends Channel
В каждый момент времени для канала, доступного для чтения, может выполняться только одна операция чтения. Если один поток инициирует операцию чтения для канала, то любой другой поток, пытающийся инициировать другую операцию чтения, будет заблокирован до завершения первой операции. Возможность одновременного выполнения других видов операций ввода-вывода зависит от типа канала.
- С версии:
- 1.4
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
int |
read |
Считывает последовательность байтов из этого канала в указанный буфер. |
Подробное описание методов
read
int read(ByteBuffer dst) throws IOException
Выполняется попытка считать из канала до r байтов, где r — количество байтов, оставшихся в буфере, то есть dst.remaining() на момент вызова этого метода.
Предположим, что считана последовательность байтов длиной n, где 0 <= n <= r. Эта последовательность байтов будет перенесена в буфер так, что первый байт последовательности окажется по индексу p, а последний — по индексу p + n - 1, где p — позиция буфера на момент вызова этого метода. После возврата позиция буфера будет равна p + n; его предел не изменится.
Операция чтения может не заполнить буфер и даже не считать ни одного байта. Это зависит от природы и состояния канала. Например, неблокирующий сокетный канал не может считать больше байтов, чем доступно в данный момент во входном буфере сокета; аналогично файловый канал не может считать больше байтов, чем осталось в файле. Однако гарантируется, что если канал работает в блокирующем режиме и в буфере остался хотя бы один байт, этот метод будет блокироваться, пока не будет считан хотя бы один байт.
Этот метод можно вызвать в любое время. Однако если другой поток уже инициировал операцию чтения для этого канала, вызов этого метода будет заблокирован до завершения первой операции.
- Параметры:
-
dst— Буфер, в который будут перенесены байты - Возвращает:
- Количество считанных байтов, возможно ноль, или
-1, если канал достиг конца потока - Выбрасывает:
-
IllegalArgumentException— Если буфер доступен только для чтения -
NonReadableChannelException— Если этот канал открыт не для чтения -
ClosedChannelException— Если этот канал закрыт -
AsynchronousCloseException— Если другой поток закроет этот канал во время выполнения операции чтения -
ClosedByInterruptException— Если другой поток прервет текущий поток во время выполнения операции чтения, тем самым закрыв канал и установив статус прерывания текущего потока -
IOException— Если произойдет другая ошибка ввода-вывода
© 1993, 2025, 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/nio/channels/ReadableByteChannel.html