2012-12-23 32 views
8

मैं एक ही परियोजना कर रहा हूँ के रूप में यहाँ का वर्णन:जावा में stdout से बाइट [] सरणी से कच्चे बाइट सामग्री को मुद्रित करने के लिए कैसे?

Wrap deflated data in gzip format

मेरे समस्या यह है कि जब मैं बाइट्स प्रिंट करने की कोशिश, मैं अजीब परिणाम प्राप्त है। मेरे समस्याओं निम्नलिखित कोड में होते हैं (चर के मेरा बुरा विकल्प के लिए खेद है):

for(int k = 0; k < head.length; k++){ 
     System.out.write(head[k]); 
    } 

    for(int m = 0; m < a.size(); m++){ 
     int comprlength = a.get(m).getclength(); 
     for(int ii = 0; ii < comprlength; ii++){ 
      System.out.write(a.get(m).getcompr()[ii]); 
     } 
    } 
    for(int j = 0; j < f1.length; j++){ 
     System.out.write(f1[j]); 
    } 
    for(int ll = 0; ll < total_d.length; ll++){ 
     System.out.write(total_d[ll]); 
    } 

पिछले दो छोरों के लिए बाहर उनकी बाइट सरणियों की सामग्री मुद्रित नहीं है। इस प्रकार gzip का उपयोग करते समय मुझे फ़ाइल त्रुटि का एक अप्रत्याशित अंत मिलता है। अजीब चीज यह है कि अगर मैं दूसरे फॉर-लूप ब्लॉक (चर एम और आईआई के साथ ब्लॉक) पर टिप्पणी करता हूं, तो कुछ भी मुद्रित नहीं होता है।

तो मैं अपने बाइट सरणी की सामग्री को सही तरीके से कैसे प्रिंट करूं? दूसरे फॉर-लूप पर टिप्पणी क्यों नहीं की जाती है जब दूसरा फॉर-लूप टिप्पणी नहीं करता है और यदि यह दूसरी फॉर-लूप टिप्पणी नहीं की जाती है तो यह कुछ भी प्रिंट क्यों नहीं करती है?

संपादित करें:

अधिक विशिष्ट होना करने के लिए:

मैं कच्चे बाइट्स को लिखने के लिए चाहते हैं। और मैं यह करने के लिए इतना है कि यह सही है चाहता हूँ मेरी बाइट सरणियों

+0

यदि आप System.out.write का उपयोग करते हैं तो आपको अपने कोड के अंत में '\ n' वर्ण लिखकर आउटपुट स्ट्रीम को फ्लश करने की आवश्यकता हो सकती है। – codebox

उत्तर

34

अपने बाइट सरणी मान लिया जाये कि में से हर एक के लिए एक दूसरे buf कहा जाता है के बाद:

System.out.println(Arrays.toString(buf)); 

संपादित करें: यह है कि तुम क्या की तरह लगता है वास्तव में करना चाहते हैं कि अपने बाइट्स को stdout पर लिखें, उन्हें प्रिंट न करें। एक स्ट्रीम में मुद्रण और लिखने के बीच अंतर के लिए http://docs.oracle.com/javase/6/docs/api/java/io/PrintStream.html देखें। सबसे आसान तरीका है फोन करने के लिए किया जाना चाहिए लिखने (बाइट [] ख) विधि:

System.out.write(buf); 
+3

@ भाविक अंबानी: बाइट संख्याएं हैं, और मुझे नहीं लगता कि आप कंसोल पर संख्या क्यों मुद्रित नहीं कर सके। उपर्युक्त यही है। –

+0

लेकिन मैं कच्चे बाइट – XCBaller

+0

धन्यवाद आदमी मुद्रित करना चाहता हूं। इससे पहले कि आप इसे सुझाव देने से पहले प्रिंटस्ट्रीम में आए थे। यह जिस तरीके से मैं चाहता हूं प्रिंट करता हूं। मुझे अपने कोड में कहीं और एक बग मिला जो अजीब व्यवहार कर रहा था। एक बार फिर धन्यवाद। – XCBaller

-1
/* There is an image/ic_launcher in the drawable folder for which I am making ByteArray */ 



    Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.img); 
    ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
    bmp.compress(Bitmap.CompressFormat.PNG, 100, stream); 
    byte[] mByteArray = stream.toByteArray(); 

/* यहाँ मैं कच्चे डेटा हेक्साडेसिमल स्वरूप में नहीं दिखा रहा */

System.out.println(Arrays.toString(mByteArray)); 

मुझे लगता है कि यह आपको लोगों की मदद करेगा!