Справочник 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);
// ... обработка данных шрифта
}