Binary Data
Problem
You need to read or write binary data, as opposed to text.
Solution
Use a
DataInputStream
or DataOutputStream.
Discussion
The Stream
classes have been in Java since the JDK
1.0 release and are optimal for reading/writing bytes, rather than
characters. The “data” layer over them, comprising
DataInputStream
and
DataOutputStream
, are configured for reading and
writing binary values, including all
of Java’s built-in types. Suppose
that you want to write a binary integer plus a binary floating-point
value into a file and read it back later. This
code shows the writing part:
import java.io.*; /** Write some data in binary. */ public class WriteBinary { public static void main(String argv[]) throws IOException { int i = 42; double d = Math.PI; String FILENAME = "binary.dat"; DataOutputStream os = new DataOutputStream( new FileOutputStream(FILENAME)); os.writeInt(i); os.writeDouble(d); os.close( ); System.out.println("Wrote " + i + ", " + d + " to file " + FILENAME); } }
The reading part is left as an exercise for the reader. Should you
need to write all the fields from an object, you should probably use
an
ObjectDataStream
; see Section 9.17.
Get Java Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.