2015-05-04 72 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它的工作完美 –