Класс 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 |
lock() |
Получает эксклюзивную блокировку файла этого канала. |
abstract Future |
lock |
Получает блокировку заданной области файла этого канала. |
abstract <A> void |
lock |
Получает блокировку заданной области файла этого канала. |
final <A> void |
lock |
Получает эксклюзивную блокировку файла этого канала. |
static AsynchronousFileChannel |
open |
Открывает или создает файл для чтения и/или записи, возвращая асинхронный файл-канал для доступа к файлу. |
static AsynchronousFileChannel |
open |
Открывает или создает файл для чтения и/или записи, возвращая асинхронный файл-канал для доступа к файлу. |
abstract Future |
read |
Читает последовательность байтов из этого канала в заданный буфер, начиная с заданной позиции файла. |
abstract <A> void |
read |
Читает последовательность байтов из этого канала в заданный буфер, начиная с заданной позиции файла. |
abstract long |
size() |
Возвращает текущий размер файла этого канала. |
abstract AsynchronousFileChannel |
truncate |
Усекает файл этого канала до заданного размера. |
final FileLock |
tryLock() |
Попытка получить эксклюзивную блокировку файла этого канала. |
abstract FileLock |
tryLock |
Попытка получить блокировку заданной области файла этого канала. |
abstract Future |
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.
- Параметры:
-
file- Путь к файлу для открытия или создания -
options- Параметры, определяющие способ открытия файла -
executor- Пул потоков илиnull, с которым ассоциируется канал (по умолчанию) -
attrs- Необязательный список атрибутов файла, которые устанавливаются атомарно при создании файла - Возвращает:
- Новый асинхронный файловый канал
- Исключение:
-
IllegalArgumentException- Если множество содержит недопустимое сочетание параметров -
UnsupportedOperationException- Еслиfileассоциирован с поставщиком, который не поддерживает создание асинхронных файловых каналов, или указан неподдерживаемый параметр открытия, или массив содержит атрибут, который не может быть установлен атомарно при создании файла -
FileAlreadyExistsException- Если файл с таким именем уже существует, и указан параметрCREATE_NEW, и файл открывается для записи (возможное исключение) -
IOException- Если произошла ошибка ввода-вывода
open
public static AsynchronousFileChannel open(Path file, OpenOption... options) throws IOException
Вызов этого метода работает точно так же, как вызов
ch.open(file, opts, null, new FileAttribute<?>[0]);
opts - Set, содержащий параметры, указанные в этом методе. Результирующий канал ассоциируется с пулом потоков по умолчанию, в который отправляются задачи для обработки событий ввода-вывода и вызова обработчиков завершения, которые потребляют результат асинхронных операций, выполненных на результирующем канале.
- Параметры:
-
file- Путь к файлу для открытия или создания -
options- Параметры, определяющие способ открытия файла - Возвращает:
- Новый асинхронный файловый канал
- Исключение:
-
IllegalArgumentException- Если множество содержит недопустимое сочетание параметров -
UnsupportedOperationException- Еслиfileассоциирован с поставщиком, который не поддерживает создание файловых каналов, или указан неподдерживаемый параметр открытия -
FileAlreadyExistsException- Если файл с таким именем уже существует, и указан параметрCREATE_NEW, и файл открывается для записи (возможное исключение) -
IOException- Если произошла ошибка ввода-вывода
size
public abstract long size() throws IOException
- Возвращает:
- Текущий размер файла этого канала, измеряемый в байтах
- Исключение:
-
ClosedChannelException- Если канал закрыт -
IOException- Если произошла другая ошибка ввода-вывода
truncate
public abstract AsynchronousFileChannel truncate(long size) throws IOException
Если заданный размер меньше текущего размера файла, то файл усекается, отбрасывая все байты за новым концом файла. Если заданный размер больше или равен текущему размеру файла, то файл не изменяется.
- Параметры:
-
size- Новый размер, положительное число байт - Возвращает:
- Этот файловый канал
- Исключение:
-
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. Если параметр position неотрицателен, а параметр size равен нулю, то возвращается блокировка размером Long.MAX_VALUE - position. Если блокировка, которая перекрывает запрашиваемый регион, уже удерживается этой виртуальной машиной 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, представляющий ожидаемый результат. Метод get объекта 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. Если блокировка не была получена по какой-либо другой причине, то выбрасывается соответствующее исключение. Если position неотрицательно, а size равно нулю, то возвращается блокировка размером Long.MAX_VALUE - position.
- 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, 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.
https://download.java.net/java/early_access/jdk24/docs/api/java.base/java/nio/channels/AsynchronousFileChannel.html