2010-01-29 24 views
17

Arka planım .net, Java için oldukça yeni. Şirketimizin java ekibine biraz iş yapıyorum ve mimarın bir InputStream (java.io) nesnesi alan bir yöntemi uygulamak için bana ihtiyacı var. Yöntemin amacını yerine getirebilmek için bunu bir bayt dizisine dönüştürmem gerekiyor. Bunu yapmanın kolay bir yolu var mı?Java'da, bir InputStream'i bayt dizisine (bayt []) nasıl dönüştürebilirim?

+0

Bunun bellek hogging olabileceğini unutmayın. – BalusC

cevap

51

basit yolu, yeni bir ByteArrayOutputStream oluşturmak buna byte kopyalamaya ve sonra toByteArray çağırmaktır;

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

Çıkıştan önce çıkış akışını temizlediğinizden emin olun. – quikchange

+5

@quikchange: ByteArrayOutputStream'i kullanırken gerek yok - nerede arabelleğe alınacak? –

9

basit bir yolu apache commons io bkz org.apache.commons.io.IOUtils.toByteArray(inputStream) kullanmak olacaktır.

İlgili konular