Класс ByteConversionSink
Класс ByteConversionSink представляет собой
приемник для преобразования байтовых данных.
Он используется в цепочках потоковых
преобразователей, когда необходимо принимать
байты по частям и передавать их дальше в
следующий преобразователь или накопитель.
В контексте JSON этот класс применяется
совместно с кодеками, например с Utf8Encoder,
для потокового кодирования данных.
Класс является абстрактным: напрямую его
экземпляр не создается, а объекты получаются
через методы startChunkedConversion
соответствующих преобразователей.
Синтаксис
abstract class ByteConversionSink extends Sink<List<int>>
Пример
Давайте получим объект ByteConversionSink
через кодировщик utf8 и добавим в него
байты строки в кодировке ASCII:
import 'dart:convert';
void main()
{
String str = 'abcde';
List<int> bytes = ascii.encode(str);
ByteConversionSink sink = utf8.encoder.startChunkedConversion(
StringConversionSink.fromStringSink(StringBuffer())
);
sink.add(bytes);
sink.close();
print(bytes);
}
Результат выполнения кода:
[97, 98, 99, 100, 101]
Пример
Давайте проверим, что ByteConversionSink
принимает данные порциями и корректно
закрывается после завершения передачи:
import 'dart:convert';
void main()
{
String str = '12345';
ByteConversionSink sink = utf8.encoder.startChunkedConversion(
StringConversionSink.fromStringSink(StringBuffer())
);
sink.add(ascii.encode(str.substring(0, 2)));
sink.add(ascii.encode(str.substring(2)));
sink.close();
print('sink closed');
}
Результат выполнения кода:
"sink closed"
Смотрите также
-
класс
Utf8Encoder,
который создает приемник для кодирования в UTF-8 -
класс
Utf8Codec,
который предоставляет кодировщик и декодер UTF-8 -
класс
JsonCodec,
который выполняет кодирование и декодирование JSON -
метод
encode,
который преобразует объект в JSON-строку