Spec-Zone.ru › OpenJDK 17

Интерфейс 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 - Если другой поток прерывает текущий поток во время выполнения операции чтения, тем самым закрывая поток и устанавливая состояние прерывания текущего потока
IOException - Если возникает другая ошибка ввода-вывода

write

int write(ByteBuffer src) throws IOException
Записывает последовательность байтов в этот поток из предоставленного буфера.

Байты записываются, начиная с текущей позиции потока, если поток не подключен к сущности, такой как файл, который открыт с параметром APPEND, в этом случае позиция сначала перемещается в конец. Сущность, к которой подключен канал, увеличивается при необходимости, чтобы вместить записанные байты, а затем позиция обновляется с количеством фактически записанных байтов. В противном случае этот метод ведет себя точно так же, как определено интерфейсом WritableByteChannel.

Определяется:
write в интерфейсе WritableByteChannel
Параметры:
src - Буфер, из которого должны быть извлечены байты
Возвращает:
Количество записанных байтов, возможно ноль
Исключения:
ClosedChannelException - Если этот поток закрыт
AsynchronousCloseException - Если другой поток закрывает этот поток во время выполнения операции записи
ClosedByInterruptException - Если другой поток прерывает текущий поток во время выполнения операции записи, тем самым закрывая поток и устанавливая состояние прерывания текущего потока
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, 2021, 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/17/docs/api/java.base/java/nio/channels/SeekableByteChannel.html

Spec-Zone.ru

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