Интерфейс SeekableByteChannel
- Все суперинтерфейсы:
AutoCloseable, ByteChannel, Channel, Closeable, ReadableByteChannel, WritableByteChannel
- Все известные классы, реализующие интерфейс:
FileChannel
public interface SeekableByteChannel extends ByteChannel
Байтовый канал с произвольным доступом связан с сущностью, обычно файлом, содержащей последовательность байтов переменной длины, которую можно читать и записывать. Текущую позицию можно queried и modified. Канал также предоставляет доступ к текущему размеру сущности, с которой он связан. Размер увеличивается, когда байты записываются за его текущей границей; размер уменьшается, когда он truncated.
Методы position и truncate, которые иначе не возвращают значение, должны возвращать канал, для которого они вызваны. Это позволяет объединять вызовы методов в цепочки. Реализациям этого интерфейса следует уточнять тип возвращаемого значения, чтобы вызовы методов для класса реализации можно было объединять в цепочки.
- Начиная с:
- 1.7
- См. также:
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
long |
position() |
Возвращает позицию этого канала. |
SeekableByteChannel |
position |
Задаёт позицию этого канала. |
int |
read |
Считывает последовательность байтов из этого канала в заданный буфер. |
long |
size() |
Возвращает текущий размер сущности, с которой связан этот канал. |
SeekableByteChannel |
truncate |
Усекает сущность, с которой связан этот канал, до заданного размера. |
int |
write |
Записывает последовательность байтов из заданного буфера в этот канал. |
Подробное описание методов
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.