У меня есть объект класса StreamResource с некоторым необходимым содержимым. Я уверен, что этот контент действителен, и мне нужно сохранить его локально для дальнейшей обработки. Вот фрагмент кода:
OutputStream os = new FileOutputStream(filePath, false);
byte[] buffer = new byte[1024];
int bytesRead;
//read from is to buffer
try {
while(true)
{
bytesRead = resource.getStream().getStream().read(buffer);
if(bytesRead == -1)
break;
os.write(buffer, 0, bytesRead);
resource.getStream().getStream().skip(bytesRead);
}
os.flush();
os.close();
} catch (IOException e) {
e.printStackTrace();
}
И вот я присоединяюсь к бесконечному циклу. Разрыв никогда не происходит, и файл в нужном месте становится огромным, как и должно быть на самом деле. В отладчике я вижу, что операция read () возвращает только 1-й блок байтов на каждой итерации, даже с вызовом skip () после os.write.
Как мне читать контент из потока?
Спасибо.