2015-05-04 12 views
11

Ich lese dds Texturen, aber seit einmal das Glas gebaut kann ich nicht auf diese Texturen durch url und file zugreifen und stattdessen InputStream verwenden.Java InputStream zu ByteBuffer

Also ich würde wissen müssen, wie ich eine java.​nio.ByteBuffer von einem java.io.InputStream erhalten kann.

Ps: egal durch dritte Teil Bibliotheken, ich brauche es nur

Antwort

18

Für mich arbeiten in diesem Fall das beste ist Apache commons-io diese und ähnliche Aufgaben zu bewältigen.

Der Typ hat eine statische Methode zum Lesen eines InputStream und eine byte[] zurückgeben.

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

Intern schafft dies ein ByteArrayOutputStream und kopiert das Bytes an den Ausgang, ruft dann toByteArray().

UPDATE: solange Sie die byte array haben, wie @Peter darauf, Sie müssen ByteBuffer

ByteBuffer.wrap(bytes) 
+3

und dann zu ByteBuffer konvertieren? – elect

+2

@elect ja, 'ByteBuffer.wrap (Bytes)' –

+0

@peterLawrey es hat perfekt funktioniert –