Если метод общедоступного API возвращает InputStream или byte []

Я разрабатываю API для клиента службы, которая получает данные в виде потока байтов. в чем преимущество использования

InputStream getData(String param1, String param2);

перед

byte[] getData(String param1, String param2);

. Метод, который возвращает входной поток, беспокоит меня, потому что теперь

  1. мой код должен зависеть от внешнего кода, чтобы закрыть входной поток. Я знаю, что лучше всего закрывать только те ресурсы, которые вы открываете, поэтому это кажется неправильным.
  2. Входной поток не повторяется. Как только клиент моего кода читает поток, байты теряются
  3. Поток в моей реализации фактически проходит через сеть (сокет). Пока я использую пул соединений и контролирую его, чтобы избавиться от просроченных соединений и т. Д., Я считаю, что было бы лучше закрыть ресурсы, которые я открыл сам.

Как лучше всего это спроектировать? Я даже подумал об использовании

void writeData(String param, String param, OutputStream os);

, но это делает название метода не интуитивно понятным.

5
задан BalusC 21 February 2012 в 23:23
поделиться