You can save byte array in this way:
FileOutputStream fos = new FileOutputStream(strFilePath);
String strContent = "Content";
/*
* To write byte array to a file, use
* void write(byte[] bArray) method of Java FileOutputStream class.
*
* This method writes given byte array to a file.
*/
fos.write(strContent.getBytes());
/*
* Close FileOutputStream using,
* void close() method of Java FileOutputStream class.
*
*/
fos.close();
It will create a file with your byte array
Answer from Jayyrus on Stack OverflowHow to write array of bytes to a binary file in Java - Stack Overflow
Writing array data to a binary file in Java - Stack Overflow
arrays - byte[] to file in Java - Stack Overflow
java - How to convert a byte to its binary string representation - Stack Overflow
Videos
Use Apache Commons IO
FileUtils.writeByteArrayToFile(new File("pathname"), myByteArray)
Or, if you insist on making work for yourself...
try (FileOutputStream fos = new FileOutputStream("pathname")) {
fos.write(myByteArray);
//fos.close(); There is no more need for this line since you had created the instance of "fos" inside the try. And this will automatically close the OutputStream
}
Without any libraries:
try (FileOutputStream stream = new FileOutputStream(path)) {
stream.write(bytes);
}
With Google Guava:
Files.write(bytes, new File(path));
With Apache Commons:
FileUtils.writeByteArrayToFile(new File(path), bytes);
All of these strategies require that you catch an IOException at some point too.
Use Integer#toBinaryString():
byte b1 = (byte) 129;
String s1 = String.format("%8s", Integer.toBinaryString(b1 & 0xFF)).replace(' ', '0');
System.out.println(s1); // 10000001
byte b2 = (byte) 2;
String s2 = String.format("%8s", Integer.toBinaryString(b2 & 0xFF)).replace(' ', '0');
System.out.println(s2); // 00000010
DEMO.
I used this. Similar idea to other answers, but didn't see the exact approach anywhere :)
System.out.println(Integer.toBinaryString((b & 0xFF) + 0x100).substring(1));
0xFF=255=0b11111111(max value for an unsigned byte)0x100=256=0b100000000
The & upcasts the byte to an integer. At that point, it can be anything from [0;255] ([0b00000000 ; 0b11111111], I excluded the leading 24 bits). Adding 0x100 and then .substring(1) ensure there will be leading zeroes.
I timed it compared to João Silva's answer, and this is over 10 times faster. http://ideone.com/22DDK1 I didn't include Pshemo's answer as it doesn't pad properly.