Существует еще одна библиотека с открытым исходным кодом, которая называется EasyStream , которая прозрачно обрабатывает каналы и потоки.
Это не сложно, если все идет хорошо. Проблемы возникают, когда (глядя на пример Лоуренса Гонсалвеса)
class1.putDataOnOutputStream (уходит);
Выдает исключение.
В этом примере поток просто завершается, и исключение теряется, а внешний InputStream
может быть усечен.
Easystream занимается распространением исключений и другими неприятными проблемами, которые я отлаживал около года. (Я ведущий библиотеки: очевидно, мое решение самое лучшее;))
Вот пример того, как его использовать:
final InputStreamFromOutputStream<String> isos = new InputStreamFromOutputStream<String>(){
@Override
public String produce(final OutputStream dataSink) throws Exception {
/*
* call your application function who produces the data here
* WARNING: we're in another thread here, so this method shouldn't
* write any class field or make assumptions on the state of the outer class.
*/
return produceMydata(dataSink)
}
};
Существует также хорошее введение , где объясняются все другие способы преобразования OutputStream в InputStream. Стоит взглянуть.