Spec-Zone .ru
спецификации, руководства, описания, API
|
public abstract class AsynchronousFileChannel extends Object implements AsynchronousChannel
Асинхронный канал файла создается, когда файл открывается, вызывая один из open
методы определяются этим классом. Файл содержит последовательность переменной длины байтов, которые могут быть считаны и записаны и чей текущий размер может быть queried
. Размер файла увеличивается, когда байты пишутся вне его текущего размера; размер файла уменьшается, когда это truncated
.
У асинхронного канала файла нет текущей позиции в пределах файла. Вместо этого позиция файла определяется к каждому чтению и методу записи, который инициирует асинхронные операции. A CompletionHandler
определяется в качестве параметра и вызывается, чтобы использовать результат работы ввода-вывода. Этот класс также определяет чтение и методы записи, которые инициируют асинхронные операции, возвращаясь a Future
представлять результат на ожидании работы. Future
может использоваться, чтобы проверить, завершилась ли работа, ожидает ее завершения, и получает результат.
Кроме того, к операциям чтения и операциям записи, этот класс определяет следующие операции:
Обновления, сделанные к файлу, могут быть forced out
к базовому устройству хранения данных, гарантируя, что данные не теряются в случае системного катастрофического отказа.
Область файла может быть locked
против доступа другими программами.
AsynchronousFileChannel
связывается с пулом потоков, к которому задачи представляются, чтобы обработать события ввода-вывода и диспетчеризировать обработчикам завершения, которые используют результаты операций ввода-вывода на канале. Обработчик завершения для работы ввода-вывода, инициируемой на канале, как гарантируют, будет вызван одним из потоков в пуле потоков (Это гарантирует, что обработчик завершения выполняется потоком с ожидаемыми идентификационными данными). Где работа ввода-вывода сразу завершается, и поток инициирования является самостоятельно потоком в пуле потоков, тогда обработчик завершения может быть вызван непосредственно потоком инициирования. Когда AsynchronousFileChannel
создается, не определяя пул потоков тогда, канал связывается с системно-зависимым пулом потоков по умолчанию, который может быть совместно использован с другими каналами. Пул потоков по умолчанию конфигурируется системными свойствами, определенными AsynchronousChannelGroup
класс.
Каналы этого типа безопасны для использования многократными параллельными потоками. close
метод может быть вызван в любое время, как определено Channel
интерфейс. Это заставляет все выдающиеся асинхронные операции на канале завершаться с исключением AsynchronousCloseException
. Многократные операции чтения и операции записи могут быть выдающимися одновременно. Когда многократные операции чтения и операции записи являются выдающимися тогда упорядочивание операций ввода-вывода, и порядок, что обработчики завершения вызываются, не определяется; они, как, в частности гарантируют, не выполнятся в порядке, что операции инициировались. ByteBuffers
используемый, читая или при записи не безопасны для использования многократными параллельными операциями ввода-вывода. Кроме того, после того, как работа ввода-вывода инициируется тогда, забота должна быть проявлена, чтобы гарантировать, что к буферу не получают доступ, пока работа не завершилась.
Как с FileChannel
, представление файла, обеспеченного экземпляром этого класса, как гарантируют, будет непротиворечивым с другими представлениями того же самого файла, обеспеченного другими экземплярами в той же самой программе. Представление, обеспеченное экземпляром этого класса, может или, возможно, не, однако, является непротиворечивым с представлениями, замеченными другими одновременно рабочими программами из-за кэширования выполняемого базовой операционной системой и задержками, вызванными протоколами сетевой файловой системы. Это - истина независимо от языка, на котором эти другие программы пишутся, и работают ли они на той же самой машине или на некоторой другой машине. Точный характер любых таких несогласованностей является системно-зависимым и является поэтому неуказанным.
Модификатор | Конструктор и Описание |
---|---|
protected |
AsynchronousFileChannel()
Инициализирует новый экземпляр этого класса.
|
Модификатор и Тип | Метод и Описание |
---|---|
abstract void |
force(boolean metaData)
Силы любые обновления к файлу этого канала, который будет записан устройству хранения данных, которое содержит это.
|
Future<FileLock> |
lock()
Получает монопольную блокировку на файле этого канала.
|
<A> void |
lock(A attachment, CompletionHandler<FileLock,? super A> handler)
Получает монопольную блокировку на файле этого канала.
|
abstract Future<FileLock> |
lock(long position, long size, boolean shared)
Получает блокировку на данной области файла этого канала.
|
abstract <A> void |
lock(long position, long size, boolean shared, A attachment, CompletionHandler<FileLock,? super A> handler)
Получает блокировку на данной области файла этого канала.
|
static AsynchronousFileChannel |
open(Path file, OpenOption... options)
Открывает или создает файл для чтения и/или записи, возвращая асинхронный канал файла, чтобы получить доступ к файлу.
|
static AsynchronousFileChannel |
open(Path file, Set<? extends OpenOption> options, ExecutorService executor, FileAttribute<?>... attrs)
Открывает или создает файл для чтения и/или записи, возвращая асинхронный канал файла, чтобы получить доступ к файлу.
|
abstract Future<Integer> |
read(ByteBuffer dst, long position)
Читает последовательность байтов от этого канала в данный буфер, запускающийся в данной позиции файла.
|
abstract <A> void |
read(ByteBuffer dst, long position, A attachment, CompletionHandler<Integer,? super A> handler)
Читает последовательность байтов от этого канала в данный буфер, запускающийся в данной позиции файла.
|
abstract long |
size()
Возвращает текущий размер файла этого канала.
|
abstract AsynchronousFileChannel |
truncate(long size)
Усекает файл этого канала к данному размеру.
|
FileLock |
tryLock()
Попытки получить монопольную блокировку на файле этого канала.
|
abstract FileLock |
tryLock(long position, long size, boolean shared)
Попытки получить блокировку на данной области файла этого канала.
|
abstract Future<Integer> |
write(ByteBuffer src, long position)
Пишет последовательность байтов к этому каналу от данного буфера, запускающегося в данной позиции файла.
|
abstract <A> void |
write(ByteBuffer src, long position, A attachment, CompletionHandler<Integer,? super A> handler)
Пишет последовательность байтов к этому каналу от данного буфера, запускающегося в данной позиции файла.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
близко
protected AsynchronousFileChannel()
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
установить атомарно, создавая файл.
Новый канал создается, вызывая newFileChannel
метод на провайдере, который создал Path
.
file
- Путь файла, чтобы открыться или создатьoptions
- Опции, определяющие, как файл открываетсяexecutor
- Пул потоков или null
связать канал с пулом потоков по умолчаниюattrs
- Дополнительный список атрибутов файла, чтобы установить атомарно, создавая файлIllegalArgumentException
- Если набор содержит недопустимую комбинацию опцийUnsupportedOperationException
- Если file
связывается с провайдером, который не поддерживает создающие асинхронные каналы файла, или неподдерживаемая открытая опция определяется, или массив содержит атрибут, который не может быть установлен атомарно, создавая файлIOException
- Если ошибка ввода-вывода происходитSecurityException
- Если менеджер безопасности устанавливается, и он отрицает неуказанное разрешение, требуемое реализацией. В случае провайдера по умолчанию, SecurityManager.checkRead(String)
метод вызывается, чтобы проверить доступ для чтения, если файл открывается для того, чтобы читать. SecurityManager.checkWrite(String)
метод вызывается, чтобы проверить доступ для записи, если файл открывается для того, чтобы записатьpublic static AsynchronousFileChannel open(Path file, OpenOption... options) throws IOException
Вызов этого метода ведет себя точно таким же образом как вызов
ch.open
(file, opts, null, new FileAttribute<?>[0]);
где opts
a Set
содержа опции, определенные к этому методу. Получающийся канал связывается с пулом потоков по умолчанию, к которому задачи представляются, чтобы обработать события ввода-вывода и диспетчеризировать обработчикам завершения, которые используют результат асинхронных операций, выполняемых на получающемся канале.
file
- Путь файла, чтобы открыться или создатьoptions
- Опции, определяющие, как файл открываетсяIllegalArgumentException
- Если набор содержит недопустимую комбинацию опцийUnsupportedOperationException
- Если file
связывается с провайдером, который не поддерживает каналы файла создания, или неподдерживаемая открытая опция определяетсяIOException
- Если ошибка ввода-вывода происходитSecurityException
- Если менеджер безопасности устанавливается, и он отрицает неуказанное разрешение, требуемое реализацией. В случае провайдера по умолчанию, SecurityManager.checkRead(String)
метод вызывается, чтобы проверить доступ для чтения, если файл открывается для того, чтобы читать. SecurityManager.checkWrite(String)
метод вызывается, чтобы проверить доступ для записи, если файл открывается для того, чтобы записатьpublic abstract long size() throws IOException
ClosedChannelException
- Если этот канал закрываетсяIOException
- Если некоторая другая ошибка ввода-вывода происходитpublic abstract AsynchronousFileChannel truncate(long size) throws IOException
Если данный размер является меньше чем текущий размер файла тогда, файл является усеченным, отбрасывая любые байты вне нового конца файла. Если данный размер больше чем или равен текущему размеру файла тогда, файл не изменяется.
size
- Новый размер, неотрицательное количество байтаNonWritableChannelException
- Если этот канал не был открыт для того, чтобы записатьClosedChannelException
- Если этот канал закрываетсяIllegalArgumentException
- Если новый размер отрицателенIOException
- Если некоторая другая ошибка ввода-вывода происходитpublic abstract void force(boolean metaData) throws IOException
Если файл этого канала находится на локальном устройстве хранения данных тогда, когда этот метод возвраты, гарантируется, что все изменения, произведенные в файле начиная с этого канала, создавались, или начиная с этого метода, был последний вызванный, будет записан тому устройству. Это полезно для обеспечения, что критическая информация не теряется в случае системного катастрофического отказа.
Если файл не находится на локальном устройстве тогда, никакая такая гарантия не делается.
metaData
параметр может использоваться, чтобы ограничить число операций ввода-вывода, которые этот метод обязан выполнять. Передача false
поскольку этот параметр указывает, что только обновляет к потребности контента файла быть записанным хранению; передача true
указывает, что обновления и к контенту файла и к метаданным должны быть записаны, который обычно требует, по крайней мере, еще одной работы ввода-вывода. Имеет ли этот параметр фактически какой-либо эффект, зависит от базовой операционной системы и является поэтому неуказанным.
Вызов этого метода может заставить работу ввода-вывода происходить, даже если канал был только открыт для того, чтобы читать. Некоторые операционные системы, например, поддерживают последнее время доступа как часть метаданных файла, и это время обновляется всякий раз, когда файл читается. Делается ли это фактически, системно-зависимое и является поэтому неуказанным.
Этот метод, как только гарантируют, вызовет изменения, которые были произведены в файле этого канала через методы, определенные в этом классе.
metaData
- Если true
тогда этот метод обязан вынуждать изменения и к контенту файла и к метаданным быть записанными хранению; иначе, это должно только вынудить изменения контента быть записаннымиClosedChannelException
- Если этот канал закрываетсяIOException
- Если некоторая другая ошибка ввода-вывода происходит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. Они не являются подходящими для того, чтобы управлять доступом к файлу многократными потоками в пределах той же самой виртуальной машины.
position
- Позиция, в которой должна запуститься заблокированная область; должно быть неотрицательнымsize
- Размер заблокированной области; должно быть неотрицательным, и сумма position
+ size
должно быть неотрицательнымshared
- true
запрашивать коллективную блокировку, когда этот канал должен быть открытым для того, чтобы читать (и возможно записать); false
запрашивать монопольную блокировку, когда этот канал должен быть открытым для того, чтобы записать (и возможно читать)attachment
- Объект присоединить к работе ввода-вывода; может быть null
handler
- Обработчик для того, чтобы использовать результатOverlappingFileLockException
- Если блокировка, которая перекрывает требуемую область, уже сохранена этой виртуальной машиной Java, или уже есть попытка на ожидании заблокировать перекрывающуюся областьIllegalArgumentException
- Если предварительные условия на параметрах не содержатNonReadableChannelException
- Если shared
истина, но этот канал не был открыт для того, чтобы читатьNonWritableChannelException
- Если shared
ложь, но этот канал не был открыт для того, чтобы записать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)
attachment
- Объект присоединить к работе ввода-вывода; может быть null
handler
- Обработчик для того, чтобы использовать результатOverlappingFileLockException
- Если блокировка уже сохранена этой виртуальной машиной Java, или уже есть попытка на ожидании заблокировать областьNonWritableChannelException
- Если этот канал не был открыт для того, чтобы записатьpublic abstract Future<FileLock> lock(long position, long size, boolean shared)
Этот метод инициирует работу, чтобы получить блокировку на данной области файла этого канала. Метод ведет себя точно тем же самым способом как lock(long, long, boolean, Object, CompletionHandler)
метод за исключением того, что вместо того, чтобы определить обработчик завершения, этот метод возвращает a Future
представление результата на ожидании. Future
's get
метод возвращается FileLock
на успешном завершении.
position
- Позиция, в которой должна запуститься заблокированная область; должно быть неотрицательнымsize
- Размер заблокированной области; должно быть неотрицательным, и сумма position
+ size
должно быть неотрицательнымshared
- true
запрашивать коллективную блокировку, когда этот канал должен быть открытым для того, чтобы читать (и возможно записать); false
запрашивать монопольную блокировку, когда этот канал должен быть открытым для того, чтобы записать (и возможно читать)Future
объект, представляющий результат на ожиданииOverlappingFileLockException
- Если блокировка уже сохранена этой виртуальной машиной Java, или уже есть попытка на ожидании заблокировать областьIllegalArgumentException
- Если предварительные условия на параметрах не содержатNonReadableChannelException
- Если shared
истина, но этот канал не был открыт для того, чтобы читатьNonWritableChannelException
- Если shared
ложь, но этот канал не был открыт для того, чтобы записатьpublic final Future<FileLock> lock()
Этот метод инициирует работу, чтобы получить монопольную блокировку на файле этого канала. Метод возвращает a Future
представление результата на ожидании работы. Future
's get
метод возвращается FileLock
на успешном завершении.
Вызов этого метода ведет себя точно таким же образом как вызов
ch.lock
(0L, Long.MAX_VALUE, false)
Future
объект, представляющий результат на ожиданииOverlappingFileLockException
- Если блокировка уже сохранена этой виртуальной машиной Java, или уже есть попытка на ожидании заблокировать областьNonWritableChannelException
- Если этот канал не был открыт для того, чтобы записатьpublic abstract FileLock tryLock(long position, long size, boolean shared) throws IOException
Этот метод не блокирует. Вызов всегда сразу возвращается, или получавший блокировку на требуемой области или бывший не в состоянии сделать так. Если это не в состоянии получить блокировку, потому что перекрывающаяся блокировка сохранена другой программой тогда, это возвращается null
. Если это не в состоянии получить блокировку по какой-либо другой причине тогда выдается, соответствующее исключение.
position
- Позиция, в которой должна запуститься заблокированная область; должно быть неотрицательнымsize
- Размер заблокированной области; должно быть неотрицательным, и сумма position
+ size
должно быть неотрицательнымshared
- true
запрашивать коллективную блокировку, false
запрашивать монопольную блокировкуnull
если блокировка не могла бы быть получена, потому что другая программа содержит перекрывающуюся блокировкуIllegalArgumentException
- Если предварительные условия на параметрах не содержатClosedChannelException
- Если этот канал закрываетсяOverlappingFileLockException
- Если блокировка, которая перекрывает требуемую область, уже сохранена этой виртуальной машиной Java, или если другой поток уже блокируется в этом методе и пытается заблокировать перекрывающуюся область того же самого файлаNonReadableChannelException
- Если shared
истина, но этот канал не был открыт для того, чтобы читатьNonWritableChannelException
- Если shared
ложь, но этот канал не был открыт для того, чтобы записатьIOException
- Если некоторая другая ошибка ввода-вывода происходитlock(Object,CompletionHandler)
, lock(long,long,boolean,Object,CompletionHandler)
, tryLock()
public final FileLock tryLock() throws IOException
Вызов этого метода формы ch.tryLock()
ведет себя точно таким же образом как вызов
ch.tryLock
(0L, Long.MAX_VALUE, false)
null
если блокировка не могла бы быть получена, потому что другая программа содержит перекрывающуюся блокировкуClosedChannelException
- Если этот канал закрываетсяOverlappingFileLockException
- Если блокировка, которая перекрывает требуемую область, уже сохранена этой виртуальной машиной Java, или если другой поток уже блокируется в этом методе и пытается заблокировать перекрывающуюся областьNonWritableChannelException
- Если shared
ложь, но этот канал не был открыт для того, чтобы записатьIOException
- Если некоторая другая ошибка ввода-вывода происходитlock(Object,CompletionHandler)
, lock(long,long,boolean,Object,CompletionHandler)
, tryLock(long,long,boolean)
public abstract <A> void read(ByteBuffer dst, long position, A attachment, CompletionHandler<Integer,? super A> handler)
Этот метод инициирует чтение последовательности байтов от этого канала в данный буфер, запускающийся в данной позиции файла. Результатом чтения является число чтения байтов или -1
если данная позиция больше чем или равна размеру файла в то время, когда чтение предпринимается.
Этот метод работает тем же самым способом AsynchronousByteChannel.read(ByteBuffer,Object,CompletionHandler)
метод, за исключением того, что байты читаются, запускаясь в данной позиции файла. Если данная позиция файла больше чем размер файла в то время, когда чтение предпринимается тогда, никакие байты не читаются.
dst
- Буфер, в который должны быть переданы байтыposition
- Позиция файла, в которой должна начаться передача; должно быть неотрицательнымattachment
- Объект присоединить к работе ввода-вывода; может быть null
handler
- Обработчик для того, чтобы использовать результатIllegalArgumentException
- Если позиция отрицательна, или буфер только для чтенияNonReadableChannelException
- Если этот канал не был открыт для того, чтобы читатьpublic abstract Future<Integer> read(ByteBuffer dst, long position)
Этот метод инициирует чтение последовательности байтов от этого канала в данный буфер, запускающийся в данной позиции файла. Этот метод возвращает a Future
представление результата на ожидании работы. Future
's get
метод возвращает число чтения байтов или -1
если данная позиция больше чем или равна размеру файла в то время, когда чтение предпринимается.
Этот метод работает тем же самым способом AsynchronousByteChannel.read(ByteBuffer)
метод, за исключением того, что байты читаются, запускаясь в данной позиции файла. Если данная позиция файла больше чем размер файла в то время, когда чтение предпринимается тогда, никакие байты не читаются.
dst
- Буфер, в который должны быть переданы байтыposition
- Позиция файла, в которой должна начаться передача; должно быть неотрицательнымFuture
объект, представляющий результат на ожиданииIllegalArgumentException
- Если позиция отрицательна, или буфер только для чтенияNonReadableChannelException
- Если этот канал не был открыт для того, чтобы читатьpublic abstract <A> void write(ByteBuffer src, long position, A attachment, CompletionHandler<Integer,? super A> handler)
Этот метод работает тем же самым способом AsynchronousByteChannel.write(ByteBuffer,Object,CompletionHandler)
метод, за исключением того, что байты пишутся, запускаясь в данной позиции файла. Если данная позиция будет больше чем размер файла, в то время, когда запись предпринимается, то файл будет выращен, чтобы разместить новые байты; значения любых байтов между предыдущим концом файла и недавно записанных байтов являются неуказанными.
src
- Буфер, от которого должны быть переданы байтыposition
- Позиция файла, в которой должна начаться передача; должно быть неотрицательнымattachment
- Объект присоединить к работе ввода-вывода; может быть null
handler
- Обработчик для того, чтобы использовать результатIllegalArgumentException
- Если позиция отрицательнаNonWritableChannelException
- Если этот канал не был открыт для того, чтобы записатьpublic abstract Future<Integer> write(ByteBuffer src, long position)
Этот метод инициирует запись последовательности байтов к этому каналу от данного буфера, запускающегося в данной позиции файла. Метод возвращает a Future
представление результата на ожидании операции записи. Future
's get
метод возвращает число записанных байтов.
Этот метод работает тем же самым способом AsynchronousByteChannel.write(ByteBuffer)
метод, за исключением того, что байты пишутся, запускаясь в данной позиции файла. Если данная позиция будет больше чем размер файла, в то время, когда запись предпринимается, то файл будет выращен, чтобы разместить новые байты; значения любых байтов между предыдущим концом файла и недавно записанных байтов являются неуказанными.
src
- Буфер, от которого должны быть переданы байтыposition
- Позиция файла, в которой должна начаться передача; должно быть неотрицательнымFuture
объект, представляющий результат на ожиданииIllegalArgumentException
- Если позиция отрицательнаNonWritableChannelException
- Если этот канал не был открыт для того, чтобы записать
Для дальнейшей ссылки API и документации разработчика, см.
Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.