Spec-Zone.ru › OpenJDK 21

Интерфейс SeekableByteChannel

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

Поток байтов Seekable связан с сущностью, обычно файлом, содержащим последовательность байтов переменной длины, которую можно читать и записывать. Текущую позицию можно 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, 2023, 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/21/docs/api/java.base/java/nio/channels/SeekableByteChannel.html

Spec-Zone.ru

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