Skip to content

Справочник API: StreamAsset

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

Обзор

StreamAsset предоставляет методы для чтения, пропуска и позиционирования в потоке байтов. Это "управляемый" объект, что означает, что Skija сама обработает очистку нативной памяти.

Методы

Чтение

  • read(buffer, size): Читает до size байтов в предоставленный массив байтов. Возвращает количество фактически прочитанных байтов.
  • peek(buffer, size): Просматривает данные без перемещения позиции в потоке.
  • isAtEnd(): Возвращает true, если поток достиг конца.

Навигация

  • skip(size): Пропускает указанное количество байтов.
  • rewind(): Перемещает позицию потока обратно в начало.
  • seek(position): Перемещается к определённой абсолютной позиции.
  • move(offset): Перемещает позицию на относительное смещение.

Информация

  • getPosition(): Возвращает текущее смещение в байтах в потоке.
  • getLength(): Возвращает общую длину потока (если она известна).
  • hasPosition(): Возвращает true, если поток поддерживает позиционирование.
  • hasLength(): Возвращает true, если длина известна.
  • getMemoryBase(): Если поток основан на памяти, возвращает адрес нативной памяти.

Дублирование

  • duplicate(): Создаёт новый StreamAsset, который использует те же данные, но имеет независимую позицию.
  • fork(): Похож на duplicate, но новый поток начинается с текущей позиции оригинала.

Использование в типографике

StreamAsset чаще всего встречается при работе с данными Typeface:

java
Typeface typeface = Typeface.makeFromFile("fonts/Inter.ttf");
StreamAsset stream = typeface.openStream();

if (stream != null) {
    byte[] header = new byte[4];
    stream.read(header, 4);
    // ... обработка данных шрифта
}