2015-05-04 5 views
11

Я читаю текстуры dds, но с тех пор, как я построил банку, я не могу получить доступ к этим текстурам через url и file и вместо этого должен использовать InputStream.Java InputStream to ByteBuffer

Так что мне нужно знать, как я могу получить java.​nio.ByteBuffer от java.io.InputStream.

Ps: независимо от того, через 3-библиотеки деталей, мне просто нужно это работает

ответ

18

Для меня самое лучшее в этом случае Apache commons-io справиться с этим и аналогичные задачи.

Тип IOUtils имеет статический метод для считывания InputStream и возвращает byte[].

InputStream is; 
byte[] bytes = IOUtils.toByteArray(is); 

Внутренне это создает ByteArrayOutputStream и копирует байты в выходной, а затем вызывает toByteArray().

UPDATE: до тех пор, как у вас есть byte array как @Peter указал, что вам нужно преобразовать в ByteBuffer

ByteBuffer.wrap(bytes) 
+3

, а затем к ByteBuffer? – elect

+2

@ выберите yes, 'ByteBuffer.wrap (bytes)' –

+0

@peterLawrey он отлично работал –