Интерфейс SeekableByteChannel
- Все суперинтерфейсы:
-
AutoCloseable,ByteChannel,Channel,Closeable,ReadableByteChannel,WritableByteChannel
- Все известные реализующие классы:
FileChannel
public interface SeekableByteChannel extends ByteChannel
Поток байтов, который сохраняет текущую позицию и позволяет изменять позицию.
Поток байтов SeekableByteChannel подключен к сущности, как правило, файлу, содержащему последовательность байтов переменной длины, которую можно читать и записывать. Текущую позицию можно 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- Если другой поток прерывает текущий поток во время выполнения операции чтения, тем самым закрывая канал и устанавливая статус прерывания текущего потока -
IOException- Если происходит какая-либо другая ошибка ввода-вывода
write
int write(ByteBuffer src) throws IOException
Записывает последовательность байтов в этот канал из заданного буфера.
Байты записываются, начиная с текущей позиции этого канала, если канал не подключен к сущности, такой как файл, открытый с опцией APPEND, в этом случае позиция сначала перемещается в конец. Сущность, к которой подключен канал, увеличивается при необходимости для размещения записанных байтов, а затем позиция обновляется количеством фактически записанных байтов. В противном случае этот метод ведет себя точно так же, как указано в интерфейсе WritableByteChannel.
- Указано в:
-
writeв интерфейсеWritableByteChannel - Параметры:
-
src- Буфер, из которого должны быть извлечены байты - Возвращает:
- Количество записанных байтов, возможно ноль
- Изволяет:
-
ClosedChannelException- Если этот канал закрыт -
AsynchronousCloseException- Если другой поток закрывает этот канал во время выполнения операции записи -
ClosedByInterruptException- Если другой поток прерывает текущий поток во время выполнения операции записи, тем самым закрывая канал и устанавливая статус прерывания текущего потока -
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, 2020, 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/11/docs/api/java.base/java/nio/channels/SeekableByteChannel.html