11
我正在读取dds纹理,但由于一旦构建了jar,我无法通过url
和file
访问那些纹理,而必须使用InputStream
来代替。Java InputStream到ByteBuffer
所以我需要知道如何从java.io.InputStream
获得java.nio.ByteBuffer
。
PS:通过第三部分图书馆不管,我只需要它的工作
我正在读取dds纹理,但由于一旦构建了jar,我无法通过url
和file
访问那些纹理,而必须使用InputStream
来代替。Java InputStream到ByteBuffer
所以我需要知道如何从java.io.InputStream
获得java.nio.ByteBuffer
。
PS:通过第三部分图书馆不管,我只需要它的工作
对我来说,在这种情况下,最好是Apache commons-io处理这种和类似的任务。
IOUtils
类型有一个静态方法来读取InputStream
并返回byte[]
。
InputStream is;
byte[] bytes = IOUtils.toByteArray(is);
内部这将创建一个ByteArrayOutputStream
并复制字节输出,然后调用toByteArray()
。
UPDATE:只要你有byte array
,作为@Peter指出,你必须转换为ByteBuffer
ByteBuffer.wrap(bytes)
再到ByteBuffer的? – elect
@elect yes,'ByteBuffer.wrap(bytes)' –
@peterLawrey它的工作完美 –