Интерфейс SeekableByteChannel
- Все суперинтерфейсы:
-
AutoCloseable,ByteChannel,Channel,Closeable,ReadableByteChannel,WritableByteChannel
- Все известные реализующие классы:
FileChannel
public interface SeekableByteChannel extends ByteChannel
Поток байтов с поддержкой изменения позиции соединён с сущностью, обычно файлом, содержащим последовательность байтов переменной длины, которую можно читать и записывать. Текущая позиция может быть queried и modified. Поток также предоставляет доступ к текущему размеру сущности, к которой он подключён. Размер увеличивается, когда байты записываются за его текущим размером; размер уменьшается, когда он truncated.
Методы position и truncate, которые не возвращают иного значения, возвращают сам поток, на котором они вызваны. Это позволяет цепочку вызовов методов. Реализации этого интерфейса должны специализировать тип возвращаемого значения, чтобы вызовы методов на реализующем классе могли быть объединены в цепочку.
- С момента:
- 1.7
- См. также:
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
long |
position() |
Возвращает позицию этого потока. |
SeekableByteChannel |
position |
Устанавливает позицию этого потока. |
int |
read |
Читает последовательность байтов из этого потока в заданный буфер. |
long |
size() |
Возвращает текущий размер сущности, к которой подключён этот поток. |
SeekableByteChannel |
truncate |
Усекает сущность, к которой подключён этот поток, до заданного размера. |
int |
write |
Записывает последовательность байтов в этот поток из заданного буфера. |
Подробное описание методов
read
int read(ByteBuffer dst) throws IOException
Байты читаются, начиная с текущей позиции этого потока, а затем позиция обновляется числом фактически прочитанных байтов. В противном случае этот метод ведет себя точно так же, как указано в интерфейсе ReadableByteChannel.
- Определено в:
-
readв интерфейсеReadableByteChannel - Параметры:
-
dst- Буфер, в который должны быть перенесены байты - Возвращает:
- Количество прочитанных байтов, возможно ноль, или
-1, если поток достиг конца потока - Исключение:
-
ClosedChannelException- Если этот поток закрыт -
AsynchronousCloseException- Если другой поток закрывает этот поток во время выполнения операции чтения -
ClosedByInterruptException- Если другой поток прерывает текущий поток во время выполнения операции чтения, тем самым закрывая поток и устанавливая статус прерывания текущего потока -
NonReadableChannelException- Если этот поток не был открыт для чтения -
IOException- Если произошла какая-либо другая ошибка ввода-вывода
write
int write(ByteBuffer src) throws IOException
Байты записываются, начиная с текущей позиции этого потока, если поток не подключен к сущности, такой как файл, открытый с опцией APPEND, в этом случае позиция сначала смещается в конец. Сущность, к которой подключен поток, увеличивается при необходимости, чтобы вместить записанные байты, а затем позиция обновляется числом фактически записанных байтов. В противном случае этот метод ведет себя точно так же, как указано в интерфейсе WritableByteChannel.
- Определено в:
-
writeв интерфейсеWritableByteChannel - Параметры:
-
src- Буфер, из которого должны быть извлечены байты - Возвращает:
- Количество записанных байтов, возможно ноль
- Исключение:
-
ClosedChannelException- Если этот поток закрыт -
AsynchronousCloseException- Если другой поток закрывает этот поток во время выполнения операции записи -
ClosedByInterruptException- Если другой поток прерывает текущий поток во время выполнения операции записи, тем самым закрывая поток и устанавливая статус прерывания текущего потока -
NonWritableChannelException- Если этот поток не был открыт для записи -
IOException- Если произошла какая-либо другая ошибка ввода-вывода
position
long position() throws IOException
- Возвращает:
- Позиция этого потока, целое неотрицательное число, считающее число байтов от начала сущности до текущей позиции
- Исключение:
-
ClosedChannelException- Если этот поток закрыт -
IOException- Если произошла какая-либо другая ошибка ввода-вывода
position
SeekableByteChannel position(long newPosition) throws IOException
Установка позиции на значение, большее текущего размера, законна, но не изменяет размер сущности. Позднее попытка чтения байтов в такой позиции немедленно вернет указание на конец файла. Позднее попытка записи байтов в такую позицию приведет к увеличению сущности для размещения новых байтов; значения любых байтов между предыдущим концом файла и новыми записанными байтами не определены.
Установка позиции потока не рекомендуется, когда он подключен к сущности, обычно файлу, открытому с опцией APPEND. При открытии для добавления позиция сначала смещается в конец перед записью.
- Параметры:
-
newPosition- Новая позиция, целое неотрицательное число, считающее число байтов от начала сущности - Возвращает:
- Этот поток
- Исключение:
-
ClosedChannelException- Если этот поток закрыт -
IllegalArgumentException- Если новая позиция отрицательная -
IOException- Если произошла какая-либо другая ошибка ввода-вывода
size
long size() throws IOException
- Возвращает:
- Текущий размер в байтах
- Исключение:
-
ClosedChannelException- Если этот поток закрыт -
IOException- Если произошла какая-либо другая ошибка ввода-вывода
truncate
SeekableByteChannel truncate(long size) throws IOException
Если заданный размер меньше текущего размера, то сущность усекается, отбрасывая все байты за новым концом. Если заданный размер больше или равен текущему размеру, то сущность не изменяется. В любом случае, если текущая позиция больше заданного размера, она устанавливается на этот размер.
Реализация этого интерфейса может запрещать усечение, когда подключение к сущности, обычно файлу, открытому с опцией APPEND.
- Параметры:
-
size- Новый размер, целое неотрицательное число байтов - Возвращает:
- Этот поток
- Исключение:
-
NonWritableChannelException- Если этот поток не был открыт для записи -
ClosedChannelException- Если этот поток закрыт -
IllegalArgumentException- Если новый размер отрицательный -
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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/nio/channels/SeekableByteChannel.html