Интерфейс SeekableByteChannel
- Все суперинтерфейсы:
-
AutoCloseable,ByteChannel,Channel,Closeable,ReadableByteChannel,WritableByteChannel
- Все известные реализующие классы:
FileChannel
public interface SeekableByteChannel extends ByteChannel
Поток байтов Seekable связан с сущностью, обычно файлом, содержащим последовательность байтов переменной длины, которую можно читать и записывать. Текущую позицию можно 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, 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