Archivos que no son de texto

DataInputStream y DataOutputStream son clases de Java 1.0 que no han sido alteradas hasta ahora. Para leer y escribir datos primitivos directamente (sin convertir a/de String) siguen siendo más útiles estas dos clases.

Son clases diseñadas para trabajar de manera conjunta. Una puede leer lo que la otra escribe, que en sí no es algo legible, sino el dato como una secuencia de bytes. Por ello se utilizan para almacenar datos de manera independiente de la plataforma (o para mandarlos por una red entre ordenadores muy distintos).

El problema es que obligan a utilizar clases que descienden de InputStream y OutputStream y por lo tanto algo más complicadas de utilizar. El siguiente código primero escribe en el fichero prueba.dat para después leer los datos escritos:

// Escritura de una variable double DataOutputStream dos = new DataOutputStream(
new BufferedOutputStream(
new FileOutputStream(«prueba.dat»))); double d1 = 17/7;
dos.writeDouble(d);
dos.close();
// Lectura de la variable double DataInputStream dis = new DataInputStream(
new BufferedInputStream(
new FileInputStream(«prueba.dat»))); double d2 = dis.readDouble();

Fuente: Aprenda Java como si estuviera en primero de la Universidad de Navarra