Поделиться через


ByteBuffer.Compact Метод

Определение

Сжимает этот буфер>; >(необязательная операция).

[Android.Runtime.Register("compact", "()Ljava/nio/ByteBuffer;", "GetCompactHandler")]
public abstract Java.Nio.ByteBuffer Compact ();
[<Android.Runtime.Register("compact", "()Ljava/nio/ByteBuffer;", "GetCompactHandler")>]
abstract member Compact : unit -> Java.Nio.ByteBuffer

Возвращаемое значение

Этот буфер

Атрибуты

Исключения

Значение , если изменения в содержимое этого буфера не могут быть внесены.

Комментарии

Сжимает этот буфер>; >(необязательная операция).

Байты между текущей позицией буфера и его ограничением, если таковые имеются, копируются в начало буфера. То есть байт по индексу p =>position() копируется в нулевой индекс, байт по индексу p +>; 1 копируется в индекс один, и т. д. до байта по индексу limit()>->; 1 копируется в индекс n =>limit()>->1>->p. Затем позиция буфера имеет значение n+1 , а его ограничение имеет емкость. Метка, если определена, удаляется.

Позиция буфера имеет значение числа скопированных байтов, а не нуля, поэтому вызов этого метода может быть немедленно вызван вызовом другого относительного метода put .

Вызовите этот метод после записи данных из буфера, если запись была неполной. Следующий цикл, например, копирует байты из одного канала в другой через буфер buf:

<blockquote>

{@code
              buf.clear();          // Prepare buffer for use
              while (in.read(buf) >= 0 || buf.position != 0) {
                  buf.flip();
                  out.write(buf);
                  buf.compact();    // In case of partial write
              }
            }

</blockquote>

Документация по Java для java.nio.ByteBuffer.compact().

Части этой страницы — это изменения на основе работы, созданной и общей проектом с открытым исходным кодом Android и используемой в соответствии с условиями, описанными в лицензии Creative Commons 2.5 Attribution.

Применяется к