Spec-Zone.ru › OpenJDK 24

Интерфейс SeekableByteChannel

Все суперинтерфейсы:
AutoCloseable, ByteChannel, Channel, Closeable, ReadableByteChannel, WritableByteChannel
Все известные реализующие классы:
FileChannel
public interface SeekableByteChannel extends ByteChannel
Поток байтов, поддерживающий текущую позицию и позволяющий её изменять.

Поток байтов с поддержкой изменения позиции соединён с сущностью, обычно файлом, содержащим последовательность байтов переменной длины, которую можно читать и записывать. Текущая позиция может быть queried и modified. Поток также предоставляет доступ к текущему размеру сущности, к которой он подключён. Размер увеличивается, когда байты записываются за его текущим размером; размер уменьшается, когда он truncated.

Методы position и truncate, которые не возвращают иного значения, возвращают сам поток, на котором они вызваны. Это позволяет цепочку вызовов методов. Реализации этого интерфейса должны специализировать тип возвращаемого значения, чтобы вызовы методов на реализующем классе могли быть объединены в цепочку.

С момента:
1.7
См. также:
  • Files.newByteChannel(java.nio.file.Path, java.util.Set<? extends java.nio.file.OpenOption>, java.nio.file.attribute.FileAttribute<?>...)

Краткое описание методов

Модификатор и тип Метод Описание
long position()
Возвращает позицию этого потока.
SeekableByteChannel position(long newPosition)
Устанавливает позицию этого потока.
int read(ByteBuffer dst)
Читает последовательность байтов из этого потока в заданный буфер.
long size()
Возвращает текущий размер сущности, к которой подключён этот поток.
SeekableByteChannel truncate(long size)
Усекает сущность, к которой подключён этот поток, до заданного размера.
int write(ByteBuffer src)
Записывает последовательность байтов в этот поток из заданного буфера.

Методы, объявленные в интерфейсе java.nio.channels.Channel

close, isOpen

Подробное описание методов

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API