Pipe.SourceChannel.Read Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Перегрузки
Read(ByteBuffer) |
Считывает последовательность байтов из этого канала в заданный буфер. |
Read(ByteBuffer[]) |
Считывает последовательность байтов из этого канала в заданные буферы. |
Read(ByteBuffer[], Int32, Int32) |
Считывает последовательность байтов из этого канала в подсезону заданных буферов. |
Read(ByteBuffer)
Считывает последовательность байтов из этого канала в заданный буфер.
[Android.Runtime.Register("read", "(Ljava/nio/ByteBuffer;)I", "GetRead_Ljava_nio_ByteBuffer_Handler")]
public abstract int Read (Java.Nio.ByteBuffer? dst);
[<Android.Runtime.Register("read", "(Ljava/nio/ByteBuffer;)I", "GetRead_Ljava_nio_ByteBuffer_Handler")>]
abstract member Read : Java.Nio.ByteBuffer -> int
Параметры
- dst
- ByteBuffer
Буфер, в который передаются байты
Возвращаемое значение
Число операций чтения байтов, возможно, ноль или -1
если канал достиг конца потока
Реализации
- Атрибуты
Комментарии
Считывает последовательность байтов из этого канала в заданный буфер.
Предпринята попытка считывать до r байтов из канала, где r — это число байтов, оставшихся в буфере, то есть dst.remaining()
в данный момент вызывается этот метод.
Предположим, что считывается последовательность байтов длины n , где 0
><=
>n><=
>r. Эта последовательность байтов будет передана в буфер, чтобы первый байт в последовательности был на индексе p , а последний байт находится в индексе p +
>n>-
>1
, где p — это позиция буфера в данный момент, когда вызывается этот метод. После возврата позиции буфера будет равно p +
>n; его ограничение не изменится.
Операция чтения может не заполнять буфер, и на самом деле она может не считывать байты вообще. Независимо от того, зависит ли это от природы и состояния канала. Канал сокета в режиме неблокировки, например, не может читать больше байтов, чем немедленно доступен из входного буфера сокета; аналогичным образом канал файлов не может считывать больше байтов, чем остаться в файле. Однако гарантируется, что если канал находится в режиме блокировки и в буфере остается по крайней мере один байт, этот метод будет блокироваться до тех пор, пока не будет считываться по крайней мере один байт.
Этот метод может вызываться в любое время. Если другой поток уже инициировал операцию чтения по этому каналу, то вызов этого метода будет блокироваться до завершения первой операции.
Документация по Java для java.nio.channels.ReadableByteChannel.read(java.nio.ByteBuffer)
.
Части этой страницы — это изменения на основе работы, созданной и общей проектом с открытым исходным кодом Android и используемой в соответствии с условиями, описанными в лицензии Creative Commons 2.5 Attribution.
Применяется к
Read(ByteBuffer[])
Считывает последовательность байтов из этого канала в заданные буферы.
[Android.Runtime.Register("read", "([Ljava/nio/ByteBuffer;)J", "GetRead_arrayLjava_nio_ByteBuffer_Handler")]
public abstract long Read (Java.Nio.ByteBuffer[]? dsts);
[<Android.Runtime.Register("read", "([Ljava/nio/ByteBuffer;)J", "GetRead_arrayLjava_nio_ByteBuffer_Handler")>]
abstract member Read : Java.Nio.ByteBuffer[] -> int64
Параметры
- dsts
- ByteBuffer[]
Буферы, в которые передаются байты
Возвращаемое значение
Число операций чтения байтов, возможно, ноль или -1
если канал достиг конца потока
Реализации
- Атрибуты
Комментарии
Считывает последовательность байтов из этого канала в заданные буферы.
Вызов этого метода формы c.read(dsts)
ведет себя точно так же, как вызов
<blockquote>
c.read(dsts, 0, dsts.length);
</blockquote>
Документация по Java для java.nio.channels.ScatteringByteChannel.read(java.nio.ByteBuffer[])
.
Части этой страницы — это изменения на основе работы, созданной и общей проектом с открытым исходным кодом Android и используемой в соответствии с условиями, описанными в лицензии Creative Commons 2.5 Attribution.
Применяется к
Read(ByteBuffer[], Int32, Int32)
Считывает последовательность байтов из этого канала в подсезону заданных буферов.
[Android.Runtime.Register("read", "([Ljava/nio/ByteBuffer;II)J", "GetRead_arrayLjava_nio_ByteBuffer_IIHandler")]
public abstract long Read (Java.Nio.ByteBuffer[]? dsts, int offset, int length);
[<Android.Runtime.Register("read", "([Ljava/nio/ByteBuffer;II)J", "GetRead_arrayLjava_nio_ByteBuffer_IIHandler")>]
abstract member Read : Java.Nio.ByteBuffer[] * int * int -> int64
Параметры
- dsts
- ByteBuffer[]
Буферы, в которые передаются байты
- offset
- Int32
Смещение в массиве буфера первого буфера, в который необходимо передать байты; должно быть не отрицательным и не больше dsts.length
- length
- Int32
Максимальное число доступных буферов; должен быть не отрицательным и не превышает dsts.length
>- offset
Возвращаемое значение
Число операций чтения байтов, возможно, ноль или -1
если канал достиг конца потока
Реализации
- Атрибуты
Комментарии
Считывает последовательность байтов из этого канала в подсезону заданных буферов.
Вызов этого метода пытается считывать до r байтов из этого канала, где r — общее число байтов, оставшихся указанным подсчетом заданного буферного массива, т. е.
<blockquote>
dsts[offset].remaining()
+ dsts[offset+1].remaining()
+ ... + dsts[offset+length-1].remaining()
</blockquote>
в данный момент, когда этот метод вызывается.
Предположим, что считывается последовательность байтов длины n , где 0
><=
>n><=
>r. До первых dsts[offset].remaining()
байтов этой последовательности передаются в буфер, до следующих dsts[offset+1].remaining()
байтов передаются в буфер dsts[offset]
dsts[offset+1]
и т. д., пока вся последовательность байтов не будет передана в заданные буферы. Как можно больше байтов передаются в каждый буфер, поэтому окончательное положение каждого обновленного буфера, за исключением последнего обновленного буфера, гарантированно равно ограничению этого буфера.
Этот метод может вызываться в любое время. Если другой поток уже инициировал операцию чтения по этому каналу, то вызов этого метода будет блокироваться до завершения первой операции.
Части этой страницы — это изменения на основе работы, созданной и общей проектом с открытым исходным кодом Android и используемой в соответствии с условиями, описанными в лицензии Creative Commons 2.5 Attribution.