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