2010-01-29 25 views
17

मेरी पृष्ठभूमि .NET है, मैं जावा के लिए बिल्कुल नया हूं। मैं हमारी कंपनी की जावा टीम के लिए कुछ काम कर रहा हूं और आर्किटेक्ट को मुझे एक विधि को लागू करने की आवश्यकता है जो इनपुटस्ट्रीम (java.io) ऑब्जेक्ट लेता है। विधि के उद्देश्य को पूरा करने के लिए मुझे इसे बाइट सरणी में परिवर्तित करने की आवश्यकता है। क्या इसे करने का कोई आसान तरीका है?जावा में, मैं एक इनपुटस्ट्रीम को बाइट सरणी (बाइट []) में कैसे परिवर्तित कर सकता हूं?

+0

ध्यान रखें कि यह स्मृति होगिंग हो सकता है। – BalusC

उत्तर

51

सबसे आसान तरीका है एक नया ByteArrayOutputStream बनाने के लिए, कि बाइट्स नकल, और फिर toByteArray कहते हैं:

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

सुनिश्चित करें कि आप लौटने से पहले आउटपुटस्ट्रीम फ्लश करें। – quikchange

+5

@quikchange: जब आप एक ByteArrayOutputStream का उपयोग कर रहे हैं तो इसकी आवश्यकता नहीं है - यह कहां बफर होगा? –

9

एक आसान तरीका org.apache.commons.io.IOUtils.toByteArray(inputStream) उपयोग करने के लिए, apache commons io देखना होगा।

संबंधित मुद्दे

 संबंधित मुद्दे