Spec-Zone.ru › OpenJDK 25

Интерфейс SeekableByteChannel

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

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

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

С версии:
1.7
См. также:
  • Files.newByteChannel(Path, Set, FileAttribute...)

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

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

Методы, объявленные в интерфейсе 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 — если возникает другая ошибка ввода-вывода

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторское право © 1993, 2025, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/nio/channels/SeekableByteChannel.html

Spec-Zone.ru

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