http://java.sun.com/docs/books/tutorial/essential/io/datastreams.html
package org; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.FileInputStream; import java.io.FileOutputStream; public class DataStreams { static final String dataFile = "invoicedata"; static final double[] prices = { 19.99, 9.99, 15.99, 3.99, 4.99 }; static final int[] units = { 12, 8, 13, 29, 50 }; static final String[] descs = { "Java T-shirt", "Java Mug", "Duke Juggling Dolls", "Java Pin", "Java Key Chain" }; public static void main(String[] args) throws Exception { DataOutputStream out = new DataOutputStream(new BufferedOutputStream( new FileOutputStream(dataFile))); for (int i = 0; i < prices.length; i++) { out.writeDouble(prices[i]); out.writeInt(units[i]); out.writeUTF(descs[i]); } if (out != null) { out.close(); } DataInputStream in = new DataInputStream(new BufferedInputStream( new FileInputStream(dataFile))); double price; int unit; String desc; double total = 0.0; try { while (true) { price = in.readDouble(); unit = in.readInt(); desc = in.readUTF(); System.out.format("You ordered %d units of %s at $%.2f%n", unit, desc, price); total += unit * price; } } catch (Exception e) { } } }
Data streams support binary I/O of primitive data type values (boolean, char, byte, short, int, long, float, and double) as well as String values.
Object Streams
http://java.sun.com/docs/books/tutorial/essential/io/objectstreams.html
subinterfaces of DataInput and DataOutput

持久化对象将持久化关联的对象
A stream can only contain one copy of an object, though it can contain any number of references to it. Thus if you explicitly write an object to a stream twice, you're really writing only the reference twice.
Object ob = new Object(); out.writeObject(ob); out.writeObject(ob);
如果是这样的情况,也只写入一次对象。写入2次对象的引用
Object ob1 = in.readObject(); Object ob2 = in.readObject();
得到一个对象的2个引用