Класс AsynchronousFileChannel
- Все реализуемые интерфейсы:
-
Closeable,AutoCloseable,AsynchronousChannel,Channel
public abstract class AsynchronousFileChannel extends Object implements AsynchronousChannel
Асинхронный файл-канал создается при открытии файла путём вызова одного из методов open данного класса. Файл содержит последовательность байтов переменной длины, которые можно читать и записывать, а также размер которого можно queried. Размер файла увеличивается при записи байтов за пределами его текущего размера; размер файла уменьшается при его truncated.
У асинхронного файл-канала нет текущей позиции в файле. Вместо этого позиция файла указывается каждому методу чтения и записи, инициирующему асинхронные операции. В качестве параметра указывается CompletionHandler, который вызывается для обработки результата операции ввода-вывода. Данный класс также определяет методы чтения и записи, которые инициируют асинхронные операции, возвращая Future для представления ожидаемого результата операции. Future может быть использован для проверки завершения операции, ожидания её завершения и получения результата.
Помимо операций чтения и записи, этот класс определяет следующие операции:
Изменения, внесенные в файл, могут быть
forced outна устройство хранения данных, гарантируя, что данные не потеряются в случае сбоя системы.Область файла может быть
lockedот доступа другими программами.
С каналом связан AsynchronousFileChannel, которому предоставляются задачи для обработки событий ввода-вывода и отправки уведомлений обработчикам завершения, которые обрабатывают результаты операций ввода-вывода с каналом. Обработчик завершения операции ввода-вывода, инициированной на канале, гарантированно будет вызван одним из потоков в пуле потоков (Это гарантирует, что обработчик завершения запускается потоком с ожидаемой идентичностью). Если операция ввода-вывода завершается немедленно, а инициирующий поток является потоком в пуле потоков, то обработчик завершения может быть вызван непосредственно инициирующим потоком. Когда AsynchronousFileChannel создаётся без указания пула потоков, то канал связывается с системно-зависимым пулом потоков по умолчанию, который может быть использован другими каналами. Пул потоков по умолчанию настраивается системными свойствами, определёнными классом AsynchronousChannelGroup.
Каналы этого типа безопасны для использования в нескольких потоках одновременно. Метод close может быть вызван в любое время, как указано в интерфейсе Channel. Это приводит к завершению всех ожидающих асинхронных операций на канале с исключением AsynchronousCloseException. Несколько операций чтения и записи могут быть одновременно ожидающими. Если несколько операций чтения и записи ожидаются, то порядок операций ввода-вывода и порядок вызова обработчиков завершения не определён; они не гарантированно выполняются в порядке инициирования операций. ByteBuffers, используемые при чтении или записи, не безопасны для использования в нескольких конкурирующих операциях ввода-вывода. Кроме того, после инициирования операции ввода-вывода необходимо позаботиться о том, чтобы буфер не был доступен до завершения операции.
Как и в случае с FileChannel, представление файла, предоставляемое экземпляром этого класса, гарантированно согласуется с другими представлениями того же файла, предоставляемыми другими экземплярами в той же программе. Однако представление, предоставляемое экземпляром этого класса, может или не может соответствовать представлениям, увиденным другими одновременно работающими программами из-за кэширования, выполняемого операционной системой, и задержек, вызванных сетевыми файловыми протоколами. Это верно независимо от языка, на котором написаны эти другие программы, и от того, работают ли они на одном компьютере или на другом. Точная природа таких несоответствий зависит от системы и поэтому не определена.
- С:
- 1.7
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Инициализирует новый экземпляр данного класса. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
abstract void |
force |
Принудительно записывает любые изменения в файл этого канала на устройство хранения данных. |
final Future<FileLock> |
lock() |
Захватывает эксклюзивную блокировку файла этого канала. |
abstract Future<FileLock> |
lock |
Захватывает блокировку заданной области файла этого канала. |
abstract <A> void |
lock |
Захватывает блокировку заданной области файла этого канала. |
final <A> void |
lock |
Захватывает эксклюзивную блокировку файла этого канала. |
static AsynchronousFileChannel |
open |
Открывает или создаёт файл для чтения и/или записи, возвращая асинхронный файл-канал для доступа к файлу. |
static AsynchronousFileChannel |
open |
Открывает или создаёт файл для чтения и/или записи, возвращая асинхронный файл-канал для доступа к файлу. |
abstract Future<Integer> |
read |
Читает последовательность байтов из этого канала в указанный буфер, начиная с указанной позиции файла. |
abstract <A> void |
read |
Читает последовательность байтов из этого канала в указанный буфер, начиная с указанной позиции файла. |
abstract long |
size() |
Возвращает текущий размер файла этого канала. |
abstract AsynchronousFileChannel |
truncate |
Усекает файл этого канала до указанного размера. |
final FileLock |
tryLock() |
Пытается захватить эксклюзивную блокировку файла этого канала. |
abstract FileLock |
tryLock |
Пытается захватить блокировку заданной области файла этого канала. |
abstract Future<Integer> |
write |
Записывает последовательность байтов в этот канал из указанного буфера, начиная с указанной позиции файла. |
abstract <A> void |
write |
Записывает последовательность байтов в этот канал из указанного буфера, начиная с указанной позиции файла. |
Методы, объявленные в классе java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Методы, объявленные в интерфейсе java.nio.channels.AsynchronousChannel
close
Подробное описание конструкторов
AsynchronousFileChannel
protected AsynchronousFileChannel()
Подробное описание методов
open
public static AsynchronousFileChannel open(Path file, Set<? extends OpenOption> options, ExecutorService executor, FileAttribute<?>... attrs) throws IOException
Параметр options определяет, как открывается файл. Параметры READ и WRITE определяют, должен ли файл открываться для чтения и/или записи. Если ни один из параметров не содержится в массиве, то существующий файл открывается для чтения.
В дополнение к READ и WRITE, могут быть присутствуют следующие параметры:
| Параметр | Описание |
|---|---|
TRUNCATE_EXISTING | При открытии существующего файла, файл сначала усекается до размера 0 байт. Этот параметр игнорируется, когда файл открывается только для чтения. |
CREATE_NEW | Если этот параметр присутствует, то создаётся новый файл, и операция завершится ошибкой, если файл уже существует. При создании файла проверка существования файла и создание файла, если он не существует, являются атомными относительно других операций с файловой системой. Этот параметр игнорируется, когда файл открывается только для чтения. |
CREATE | Если этот параметр присутствует, то существующий файл открывается, если он существует, в противном случае создаётся новый файл. При создании файла проверка существования файла и создание файла, если он не существует, являются атомными относительно других операций с файловой системой. Этот параметр игнорируется, если параметр CREATE_NEW также присутствует или файл открывается только для чтения. |
DELETE_ON_CLOSE | При наличии этого параметра реализация предпримет лучшую возможную попытку удалить файл при закрытии методом close. Если метод close не вызывается, то делается лучшая возможная попытка удалить файл при завершении работы виртуальной машины Java. |
SPARSE | При создании нового файла этот параметр является подсказкой о том, что новый файл будет разреженным. Этот параметр игнорируется, если файл не создаётся. |
SYNC | Требует, чтобы каждое обновление содержимого или метаданных файла синхронно записывалось на подлежащее устройство хранения. (см. Целостность синхронизированного ввода-вывода файлов). |
DSYNC | Требует, чтобы каждое обновление содержимого файла синхронно записывалось на подлежащее устройство хранения. (см. Целостность синхронизированного ввода-вывода файлов). |
Реализация может также поддерживать дополнительные параметры.
Параметр executor — это ExecutorService, в который отправляются задачи для обработки событий ввода-вывода и для отправки результатов завершения операций, инициированных в результате канала. Характер этих задач сильно зависит от реализации, поэтому следует быть осторожным при настройке Executor. Минимально, он должен поддерживать неограниченную очередь задач и не должен запускать задачи в потоке вызывающего метода execute. Остановка службы выполнения задач, в то время как канал открыт, приводит к неопределённому поведению.
Параметр attrs — это необязательный массив файловых file-attributes для атомной установки при создании файла.
Новый канал создаётся путём вызова метода newAsynchronousFileChannel поставщика, который создал Path.
- Parameters:
-
file- Путь к файлу для открытия или создания -
options- Параметры, определяющие, как открывается файл -
executor- Пул потоков илиnullдля связывания канала с предопределённым пулом потоков -
attrs- Необязательный список атрибутов файла для атомной установки при создании файла - Returns:
- Новый асинхронный файловый канал
- Throws:
-
IllegalArgumentException- Если множество содержит недопустимое сочетание параметров -
UnsupportedOperationException- Еслиfileсвязан с поставщиком, который не поддерживает создание асинхронных файловых каналов, или указан неподдерживаемый параметр открытия, или массив содержит атрибут, который не может быть атомно установлен при создании файла -
FileAlreadyExistsException- Если файл с таким именем уже существует, и указан параметрCREATE_NEW, и файл открывается для записи (необязательная специфическая ошибка) -
IOException- Если произошла ошибка ввода-вывода -
SecurityException- Если установлен менеджер безопасности, и он отказывается от неопределённого разрешения, необходимого реализации. В случае с поставщиком по умолчанию, вызывается методSecurityManager.checkRead(String)для проверки доступа на чтение, если файл открывается для чтения. МетодSecurityManager.checkWrite(String)вызывается для проверки доступа на запись, если файл открывается для записи
open
public static AsynchronousFileChannel open(Path file, OpenOption... options) throws IOException
Вызов этого метода ведёт себя точно так же, как вызов
ch.open(file, opts, null, new FileAttribute<?>[0]);
где opts — это Set, содержащий параметры, заданные в этом методе. Результирующий канал связан с предопределённым пулом потоков, в который отправляются задачи для обработки событий ввода-вывода и для отправки завершающих обработчиков, которые потребляют результат асинхронных операций, выполняемых на полученном канале.
- Parameters:
-
file- Путь к файлу для открытия или создания -
options- Параметры, определяющие, как открывается файл - Returns:
- Новый асинхронный файловый канал
- Throws:
-
IllegalArgumentException- Если множество содержит недопустимое сочетание параметров -
UnsupportedOperationException- Еслиfileсвязан с поставщиком, который не поддерживает создание файловых каналов, или указан неподдерживаемый параметр открытия -
FileAlreadyExistsException- Если файл с таким именем уже существует, и указан параметрCREATE_NEW, и файл открывается для записи (необязательная специфическая ошибка) -
IOException- Если произошла ошибка ввода-вывода -
SecurityException- Если установлен менеджер безопасности, и он отказывается от неопределённого разрешения, необходимого реализации. В случае с поставщиком по умолчанию, вызывается методSecurityManager.checkRead(String)для проверки доступа на чтение, если файл открывается для чтения. МетодSecurityManager.checkWrite(String)вызывается для проверки доступа на запись, если файл открывается для записи
size
public abstract long size() throws IOException
- Returns:
- Текущий размер файла этого канала, измеренный в байтах
- Throws:
-
ClosedChannelException- Если этот канал закрыт -
IOException- Если произошла другая ошибка ввода-вывода
truncate
public abstract AsynchronousFileChannel truncate(long size) throws IOException
Если заданный размер меньше текущего размера файла, то файл усекается, отбрасывая любые байты, находящиеся за новым концом файла. Если заданный размер больше или равен текущему размеру файла, то файл не изменяется.
- Parameters:
-
size- Новый размер, неотрицательное количество байт - Returns:
- Этот файловый канал
- Throws:
-
NonWritableChannelException- Если этот канал не был открыт для записи -
ClosedChannelException- Если этот канал закрыт -
IllegalArgumentException- Если новый размер отрицательный -
IOException- Если произошла другая ошибка ввода-вывода
force
public abstract void force(boolean metaData) throws IOException
Если файл этого канала находится на локальном устройстве хранения, то по завершении этого метода гарантируется, что все изменения, внесенные в файл с момента создания канала или с момента последнего вызова этого метода, будут записаны на это устройство. Это полезно для обеспечения того, что критическая информация не потеряется в случае сбоя системы.
Если файл не находится на локальном устройстве, такая гарантия не предоставляется.
Параметр metaData может использоваться для ограничения числа операций ввода-вывода, которые должен выполнить этот метод. Передача false в качестве этого параметра означает, что в хранилище необходимо записать только обновления содержимого файла; передача true означает, что необходимо записать обновления как содержимого, так и метаданных файла, что обычно требует как минимум одной дополнительной операции ввода-вывода. Действительно ли этот параметр оказывает какое-либо влияние, зависит от базовой операционной системы и поэтому не определено.
Вызов этого метода может привести к выполнению операции ввода-вывода, даже если канал был открыт только для чтения. Некоторые операционные системы, например, поддерживают время последнего доступа как часть метаданных файла, и это время обновляется при каждом чтении файла. Будет ли это на самом деле выполняться, зависит от системы и не определено.
Этот метод гарантирует только принудительное применение изменений, которые были внесены в файл этого канала методами, определенными в этом классе.
- Parameters:
-
metaData- Еслиtrue, то этот метод должен принудительно записать в хранилище изменения как содержимого, так и метаданных файла; в противном случае, он должен только принудительно записать изменения содержимого. - Throws:
-
ClosedChannelException- Если этот канал закрыт -
IOException- Если произошла ошибка ввода-вывода
lock
public abstract <A> void lock(long position, long size, boolean shared, A attachment, CompletionHandler<FileLock,? super A> handler)
Этот метод инициирует операцию захвата блокировки заданного региона файла этого канала. Параметр handler — это обработчик завершения, который вызывается при получении блокировки (или при ошибке операции). Результат, передаваемый обработчику завершения, — это полученная FileLock.
Область, определяемая параметрами position и size, может не содержаться внутри или даже не пересекаться с фактическим базовым файлом. Регионы блокировки имеют фиксированный размер; если заблокированный регион изначально содержит конец файла, и файл увеличивается за пределы региона, то новая часть файла не будет покрываться блокировкой. Если ожидается, что файл увеличится в размерах, и требуется блокировка всего файла, то следует заблокировать область, начинающуюся с нуля и не меньшую, чем ожидаемый максимальный размер файла. Метод с двумя аргументами lock(Object,CompletionHandler) просто блокирует регион размером Long.MAX_VALUE. Если блокировка, которая пересекается с запрашиваемым регионом, уже удерживается этой виртуальной машиной Java или этот метод был вызван для блокировки перекрывающегося региона, и эта операция не завершена, то этот метод выбрасывает OverlappingFileLockException.
Некоторые операционные системы не поддерживают механизм асинхронного захвата блокировки файла. Следовательно, реализация может захватывать блокировку файла в фоновом потоке или из задачи, выполняемой потоком в связанном пуле потоков. Если имеется много ожидающих операций блокировки, это может неопределенно потреблять потоки в виртуальной машине Java.
Некоторые операционные системы не поддерживают общие блокировки, в таком случае запрос на общую блокировку автоматически преобразуется в запрос на эксклюзивную блокировку. Можно проверить, является ли полученная блокировка общей или эксклюзивной, вызвав метод isShared результата объекта блокировки.
Блокировки файлов удерживаются от имени всей виртуальной машины Java. Они не подходят для управления доступом к файлу несколькими потоками в пределах одной виртуальной машины.
- Type Parameters:
-
A- Тип вложения - Parameters:
-
position- Позиция, с которой начинается заблокированный регион; должна быть неотрицательной -
size- Размер заблокированного региона; должен быть неотрицательным, и суммаposition+sizeдолжна быть неотрицательной -
shared-true, чтобы запросить общую блокировку, в этом случае этот канал должен быть открыт для чтения (и, возможно, для записи);false, чтобы запросить эксклюзивную блокировку, в этом случае этот канал должен быть открыт для записи (и, возможно, для чтения) -
attachment- Объект, который следует присоединить к операции ввода-вывода; может бытьnull -
handler- Обработчик для обработки результата - Throws:
-
OverlappingFileLockException- Если блокировка, которая перекрывает запрашиваемый регион, уже удерживается этой виртуальной машиной Java, или уже существует попытка заблокировать перекрывающийся регион -
IllegalArgumentException- Если условия на параметрах не соблюдены -
NonReadableChannelException- Еслиsharedравно true, но этот канал не был открыт для чтения -
NonWritableChannelException- Еслиsharedравно false, но этот канал не был открыт для записи
lock
public final <A> void lock(A attachment, CompletionHandler<FileLock,? super A> handler)
Этот метод инициирует операцию захвата блокировки заданного региона файла этого канала. Параметр handler — это обработчик завершения, который вызывается при получении блокировки (или при ошибке операции). Результат, передаваемый обработчику завершения, — это полученная FileLock.
Вызов этого метода в форме ch.lock(att,handler) ведет себя точно так же, как вызов
ch.lock(0L, Long.MAX_VALUE, false, att, handler)
- Type Parameters:
-
A- Тип вложения - Parameters:
-
attachment- Объект, который следует присоединить к операции ввода-вывода; может бытьnull -
handler- Обработчик для обработки результата - Throws:
-
OverlappingFileLockException- Если блокировка уже удерживается этой виртуальной машиной Java или уже существует попытка заблокировать регион -
NonWritableChannelException- Если этот канал не был открыт для записи
lock
public abstract Future<FileLock> lock(long position, long size, boolean shared)
Этот метод инициирует операцию захвата блокировки заданного региона файла этого канала. Метод ведет себя точно так же, как метод lock(long, long, boolean, Object, CompletionHandler), за исключением того, что вместо указания обработчика завершения этот метод возвращает объект Future, представляющий ожидаемый результат. Метод Future объекта Future возвращает FileLock при успешном завершении.
- Parameters:
-
position- Позиция, с которой начинается заблокированный регион; должна быть неотрицательной -
size- Размер заблокированного региона; должен быть неотрицательным, и суммаposition+sizeдолжна быть неотрицательной -
shared-true, чтобы запросить общую блокировку, в этом случае этот канал должен быть открыт для чтения (и, возможно, для записи);false, чтобы запросить эксклюзивную блокировку, в этом случае этот канал должен быть открыт для записи (и, возможно, для чтения) - Returns:
- объект
Future, представляющий ожидаемый результат - Throws:
-
OverlappingFileLockException- Если блокировка уже удерживается этой виртуальной машиной Java или уже существует попытка заблокировать регион -
IllegalArgumentException- Если условия на параметрах не соблюдены -
NonReadableChannelException- Еслиsharedравно true, но этот канал не был открыт для чтения -
NonWritableChannelException- Еслиsharedравно false, но этот канал не был открыт для записи
lock
public final Future<FileLock> lock()
Этот метод инициирует операцию захвата эксклюзивной блокировки файла этого канала. Метод возвращает объект Future, представляющий ожидаемый результат операции. Метод get объекта Future возвращает FileLock при успешном завершении.
Вызов этого метода ведет себя точно так же, как вызов
ch.lock(0L, Long.MAX_VALUE, false)
- Returns:
- объект
Future, представляющий ожидаемый результат - Throws:
-
OverlappingFileLockException- Если блокировка уже удерживается этой виртуальной машиной Java или уже существует попытка заблокировать регион -
NonWritableChannelException- Если этот канал не был открыт для записи
tryLock
public abstract FileLock tryLock(long position, long size, boolean shared) throws IOException
Этот метод не блокирует. Вызов всегда возвращает немедленно, либо получив блокировку на запрошенном участке, либо не сумев это сделать. Если он не получает блокировку, потому что перекрывающая блокировка удерживается другой программой, то он возвращает null. Если он не получает блокировку по какой-либо другой причине, то генерируется соответствующее исключение.
- Parameters:
-
position- Позиция, с которой начинается заблокированный участок; должна быть неотрицательной -
size- Размер заблокированного участка; должен быть неотрицательным, и суммаposition+sizeдолжна быть неотрицательной -
shared-trueдля запроса совместной блокировки,falseдля запроса исключительной блокировки - Returns:
- Объект блокировки, представляющий новую полученную блокировку, или
nullесли блокировка не могла быть получена, потому что другая программа удерживает перекрывающую блокировку - Throws:
-
IllegalArgumentException- Если условия на параметрах не выполняются -
ClosedChannelException- Если этот канал закрыт -
OverlappingFileLockException- Если блокировка, перекрывающая запрашиваемый участок, уже удерживается этой виртуальной машиной Java, или если другой поток уже заблокирован в этом методе и пытается заблокировать перекрывающий участок того же файла -
NonReadableChannelException- Еслиsharedимеет значение true, но этот канал не был открыт для чтения -
NonWritableChannelException- Еслиsharedимеет значение false, но этот канал не был открыт для записи -
IOException- Если произошла какая-то другая ошибка ввода-вывода - See Also:
tryLock
public final FileLock tryLock() throws IOException
Вызов этого метода в виде ch.tryLock() ведет себя точно так же, как вызов
ch.tryLock(0L, Long.MAX_VALUE, false)
- Returns:
- Объект блокировки, представляющий новую полученную блокировку, или
nullесли блокировка не могла быть получена, потому что другая программа удерживает перекрывающую блокировку - Throws:
-
ClosedChannelException- Если этот канал закрыт -
OverlappingFileLockException- Если блокировка, перекрывающая запрашиваемый участок, уже удерживается этой виртуальной машиной Java, или если другой поток уже заблокирован в этом методе и пытается заблокировать перекрывающий участок -
NonWritableChannelException- Еслиsharedимеет значение false, но этот канал не был открыт для записи -
IOException- Если произошла какая-то другая ошибка ввода-вывода - See Also:
read
public abstract <A> void read(ByteBuffer dst, long position, A attachment, CompletionHandler<Integer,? super A> handler)
Этот метод инициирует считывание последовательности байтов из этого канала в заданный буфер, начиная с заданной позиции в файле. Результатом считывания является количество прочитанных байтов или -1 если заданная позиция больше или равна размеру файла в момент попытки считывания.
Этот метод работает аналогично методу AsynchronousByteChannel.read(ByteBuffer,Object,CompletionHandler), за исключением того, что байты считываются, начиная с заданной позиции в файле. Если заданная позиция в файле больше размера файла в момент попытки считывания, то байты не считываются.
- Type Parameters:
-
A- Тип присоединённого объекта - Parameters:
-
dst- Буфер, в который должны быть перенесены байты -
position- Позиция в файле, с которой должен начаться перенос; должна быть неотрицательной -
attachment- Объект, который нужно присоединить к операции ввода-вывода; может бытьnull -
handler- Обработчик для обработки результата - Throws:
-
IllegalArgumentException- Если позиция отрицательная или буфер только для чтения -
NonReadableChannelException- Если этот канал не был открыт для чтения
read
public abstract Future<Integer> read(ByteBuffer dst, long position)
Этот метод инициирует считывание последовательности байтов из этого канала в заданный буфер, начиная с заданной позиции в файле. Этот метод возвращает Future, представляющий ожидаемый результат операции. Метод get этого Future возвращает количество прочитанных байтов или -1 если заданная позиция больше или равна размеру файла в момент попытки считывания.
Этот метод работает аналогично методу AsynchronousByteChannel.read(ByteBuffer), за исключением того, что байты считываются, начиная с заданной позиции в файле. Если заданная позиция в файле больше размера файла в момент попытки считывания, то байты не считываются.
- Parameters:
-
dst- Буфер, в который должны быть перенесены байты -
position- Позиция в файле, с которой должен начаться перенос; должна быть неотрицательной - Returns:
- Объект
Futureпредставляющий ожидаемый результат - Throws:
-
IllegalArgumentException- Если позиция отрицательная или буфер только для чтения -
NonReadableChannelException- Если этот канал не был открыт для чтения
write
public abstract <A> void write(ByteBuffer src, long position, A attachment, CompletionHandler<Integer,? super A> handler)
Этот метод работает аналогично методу AsynchronousByteChannel.write(ByteBuffer,Object,CompletionHandler), за исключением того, что байты записываются, начиная с заданной позиции в файле. Если заданная позиция больше размера файла в момент попытки записи, то файл будет расширен для размещения новых байтов; значения любых байтов между предыдущим концом файла и новыми записанными байтами не определены.
- Type Parameters:
-
A- Тип присоединённого объекта - Parameters:
-
src- Буфер, из которого должны быть перенесены байты -
position- Позиция в файле, с которой должен начаться перенос; должна быть неотрицательной -
attachment- Объект, который нужно присоединить к операции ввода-вывода; может бытьnull -
handler- Обработчик для обработки результата - Throws:
-
IllegalArgumentException- Если позиция отрицательная -
NonWritableChannelException- Если этот канал не был открыт для записи
write
public abstract Future<Integer> write(ByteBuffer src, long position)
Этот метод инициирует запись последовательности байтов в этот канал из заданного буфера, начиная с заданной позиции в файле. Метод возвращает Future представляющий ожидаемый результат операции записи. Метод get этого Future возвращает количество записанных байтов.
Этот метод работает аналогично методу AsynchronousByteChannel.write(ByteBuffer), за исключением того, что байты записываются, начиная с заданной позиции в файле. Если заданная позиция больше размера файла в момент попытки записи, то файл будет расширен для размещения новых байтов; значения любых байтов между предыдущим концом файла и новыми записанными байтами не определены.
- Parameters:
-
src- Буфер, из которого должны быть перенесены байты -
position- Позиция в файле, с которой должен начаться перенос; должна быть неотрицательной - Returns:
- Объект
Futureпредставляющий ожидаемый результат - Throws:
-
IllegalArgumentException- Если позиция отрицательная -
NonWritableChannelException- Если этот канал не был открыт для записи
© 1993, 2021, 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/17/docs/api/java.base/java/nio/channels/AsynchronousFileChannel.html