Интерфейс 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.