Это может помочь вам:
http://ostermiller.org/convert_java_outputstream_inputstream.html
В этой статье упоминается 3 варианта:
- записать полный вывод в байтовый массив, затем прочитать его снова
- использовать трубы
- использовать кольцевой буфер байтов (часть библиотеки, размещенной на этой странице)
Просто для справки, делая все наоборот (вход в выход):
Простое решение с использованием Apache Commons IO:
IOUtils.copyLarge(InputStream, OutputStream)
или если вы просто хотите скопировать файл:
FileUtils.copyFile(inFile,outFile);
Если вы не хотите использовать Apache Commons IO, вот что делает метод copyLarge
:
public static long copyLarge(InputStream input, OutputStream output) throws IOException
{
byte[] buffer = new byte[4096];
long count = 0L;
int n = 0;
while (-1 != (n = input.read(buffer))) {
output.write(buffer, 0, n);
count += n;
}
return count;
}