Этот вопрос уже имеет ответ здесь:
Моим образованием является .NET, я довольно плохо знаком с Java. Я делаю некоторую работу для команды Java нашей компании, и архитектору нужен я для реализации метода, который берет InputStream (java.io) объект. Для выполнения цели метода, я должен преобразовать это в массив байтов. Существует ли простой способ сделать это?
Самый простой способ - создать новый ByteArrayOutputStream
, скопировать байты в это, а затем вызовите toByteArray
:
public static byte[] readFully(InputStream input) throws IOException
{
byte[] buffer = new byte[8192];
int bytesRead;
ByteArrayOutputStream output = new ByteArrayOutputStream();
while ((bytesRead = input.read(buffer)) != -1)
{
output.write(buffer, 0, bytesRead);
}
return output.toByteArray();
}
Простой способ быть использован org.apache.commons.io.ioutils.tobytearray (INPUTSTREAM)
, см. Apache Commons IO .