Я загружаю сжатый файл и построчно читаю разархивированный контент. Мой код выглядит следующим образом:
ChannelSftp channel = getJSchChannel();
try (InputStream is = channel.get(fileName);
GZIPInputStream gis = new GZIPInputStream(is);
BufferedReader reader = new BufferedReader(new InputStreamReader(gis)))
{
reader.readLine();
...
}
Поскольку разархивирование и остальная часть блока требуют значительных ресурсов процессора, я бы хотел, чтобы он работал параллельно с загрузкой файла (это огромный файл). Я думал об использовании rx.Observable для обработки всего потока данных, но я столкнулся с проблемой разархивирования. Предположим, я обертываю поток ввода файла наблюдаемым:
Observable<byte[]> obs = StringObservable.from(channel.get(fileName));
Как мне продолжить отсюда? Есть ли способ распаковать содержимое наблюдаемой?