Spec-Zone.ru › OpenJDK 27

Интерфейс 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
Модификатор и тип Метод Описание
void close()
Закрывает этот канал.
boolean 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, 2026, 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.

Spec-Zone.ru

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