I am doing the same project as describe here:
Wrap deflated data in gzip format
My problem is that when I try to print out bytes, I get weird results. My problems occur in the following code(Sorry for my bad choice of variables):
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]);
}
The last two for-loops do not print out the contents of the their byte arrays. Thus I get a unexpected end of file error when using gzip. The weird thing is that if I comment out the second for-loop block (the block with the variables m and ii), nothing gets printed out.
So how do I properly print out the contents of my byte arrays? Why does the first for-loop print out properly when the second for-loop is not commented and why does it not print anything if that second for-loop is commented?
EDIT:
To be more specific:
I want to write out the raw bytes. And I want to do it so that it is right after each other for every one of my byte arrays
You can simply iterate the byte array and print the byte using System. out. println() method.
A byte in Java is 8 bits. It is a primitive data type, meaning it comes packaged with Java. Bytes can hold values from -128 to 127. No special tasks are needed to use it; simply declare a byte variable and you are off to the races.
The bytearray type is a mutable sequence of integers in the range 0 <= x < 256. It has most of the usual methods of mutable sequences, described in Mutable Sequence Types, as well as most methods that the bytes type has, see Bytes and Byte Array Methods.
Assuming your byte array is called buf:
System.out.println(Arrays.toString(buf));
Edit: It sounds like what you really want to do is write your bytes to stdout, not print them. See http://docs.oracle.com/javase/6/docs/api/java/io/PrintStream.html for the difference between printing to a stream and writing to it. Easiest way should be to call the write(byte[] b) method:
System.out.write(buf);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With