Мой фон .net, я довольно новичок в Java. Я выполняю определенную работу для нашей команды java, и мне нужен архитектор, который использует объект InputStream (java.io). Чтобы выполнить цель метода, мне нужно преобразовать это в массив байтов. Есть ли простой способ сделать это?
В Java, как я могу преобразовать InputStream в массив байтов (byte [])?
Ответ 1
Самый простой способ - создать новый 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();
}
Ответ 2
Простым способом было бы использовать org.apache.commons.io.IOUtils.toByteArray( inputStream )
, см. apache commons io.