2012-12-23 17 views
8

burada açıklamak gibidir:Bir bayt [] dizisinden ham bayt içeriği Java'da stdout nasıl yazdırılır? Aynı proje yapıyorum

Wrap deflated data in gzip format

Benim sorunum bayt çıktısını çalıştığımda, garip sonuçlar elde olmasıdır. Benim sorunları (değişkenlerin benim kötü seçim için üzgünüm) aşağıdaki kodda oluşur: döngüler için-kendi bayt dizileri içerikleri çıktısını yok

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]); 
    } 

son iki. Böylece gzip kullanıldığında beklenmedik bir dosya hatası olur. Tuhaf olan şey, ikinci for-loop bloğunu (m ve ii değişkenleri olan blok) yorumlarsam, hiçbir şeyin basılmamasıdır.

Bayt dizilerimin içeriğini düzgün şekilde nasıl yazdırabilirim? İkinci for-döngüsü yorumlanmadığında ilk for-döngüsü neden düzgün yazdırılır ve bu ikinci for-döngüsü yorumlanırsa neden bir şey yazdırmaz?

DÜZENLEME:

daha spesifik olmak gerekirse:

çiğ bayt dışarı yazmak istiyorum.

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

Düzenleme: Doğru hale getirecek şekilde bayt dizisi varsayarsak benim bayt dizi

+0

System.out.write kullanırsanız, kodun sonunda bir '\ n' karakteri yazarak çıkış akışını temizlemeniz gerekebilir. – codebox

cevap

34

her biri için birbirlerine tampon çağrıldıktan sonra Ve ben bunu yapmak istiyorum Senin gibi geliyor Gerçekten yapmak istediğin, baytları yazmak için stdout yazmaktır. Bir akışa yazdırma ve ona yazma arasındaki fark için bkz. http://docs.oracle.com/javase/6/docs/api/java/io/PrintStream.html. En kolay yolu aramak olmalıdır yazma (byte [] b) yöntemi:

System.out.write(buf); 
+3

@BhavikAmbani: bytes sayılardır ve neden numaraları konsola yazdıramadığınızı anlamıyorum. Yukarıdakiler böyle yapar. –

+0

Ancak ham baytları – XCBaller

+0

yazdırmak istiyorum. Teşekkürler. Bunu önermeden kısa bir süre önce PrintStream ile karşılaştım. İstediğim şekilde yazdırıyor. Ayrıca, kodumda garip davranışlara neden olan başka bir hata buldum. Tekrar teşekkürler. – 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(); 

/* burada onaltılık biçimde ham verileri değil gösteriyorum */

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

bence Bu size yardımcı olacaktır!

İlgili konular