Я разрабатываю API для клиента службы, которая получает данные в виде потока байтов.
в чем преимущество использования
InputStream getData(String param1, String param2);
перед
byte[] getData(String param1, String param2);
. Метод, который возвращает входной поток, беспокоит меня, потому что теперь
- мой код должен зависеть от внешнего кода, чтобы закрыть входной поток. Я знаю, что лучше всего закрывать только те ресурсы, которые вы открываете, поэтому это кажется неправильным.
- Входной поток не повторяется. Как только клиент моего кода читает поток, байты теряются
- Поток в моей реализации фактически проходит через сеть (сокет). Пока я использую пул соединений и контролирую его, чтобы избавиться от просроченных соединений и т. Д., Я считаю, что было бы лучше закрыть ресурсы, которые я открыл сам.
Как лучше всего это спроектировать? Я даже подумал об использовании
void writeData(String param, String param, OutputStream os);
, но это делает название метода не интуитивно понятным.
задан BalusC 21 February 2012 в 23:23
поделиться