2015-05-04 74 views
11

我正在读取dds纹理,但由于一旦构建了jar,我无法通过urlfile访问那些纹理,而必须使用InputStream来代替。Java InputStream到ByteBuffer

所以我需要知道如何从java.io.InputStream获得java.​nio.ByteBuffer

PS:通过第三部分图书馆不管,我只需要它的工作

回答

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

@elect yes,'ByteBuffer.wrap(bytes)' –

+0

@peterLawrey它的工作完美 –