2010-01-29 10 views
17

Mein Hintergrund ist .net, ich bin ziemlich neu in Java. Ich arbeite für das Java-Team unseres Unternehmens und der Architekt benötigt mich, um eine Methode zu implementieren, die ein InputStream (java.io) -Objekt verwendet. Um den Zweck der Methode zu erfüllen, muss ich das in ein Byte-Array konvertieren. Gibt es einen einfachen Weg, dies zu tun?Wie kann ich in Java einen InputStream in ein Byte-Array (byte []) konvertieren?

+0

Beachten Sie, dass dies Speichermangel sein kann. – BalusC

Antwort

51

Der einfachste Weg ist es, ein neues ByteArrayOutputStream, kopieren Sie das Bytes, das zu schaffen, und dann toByteArray nennen:

public static byte[] readFully(InputStream input) throws IOException 
{ 
    byte[] buffer = new byte[8192]; 
    int bytesRead; 
    ByteArrayOutputStream output = new ByteArrayOutputStream(); 
    while ((bytesRead = input.read(buffer)) != -1) 
    { 
     output.write(buffer, 0, bytesRead); 
    } 
    return output.toByteArray(); 
} 
+0

Stellen Sie sicher, dass Sie den Ausgangsstrom vor der Rückkehr spülen. – quikchange

+5

@quikchange: Es gibt keine Notwendigkeit, wenn Sie einen ByteArrayOutputStream verwenden - wo würde es puffern? –

9

Ein einfacher Weg org.apache.commons.io.IOUtils.toByteArray(inputStream) findet apache commons io zu verwenden wäre.

Verwandte Themen