[b]Data Streams[/b]
[url]http://java.sun.com/docs/books/tutorial/essential/io/datastreams.html[/url]
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
[url]http://java.sun.com/docs/books/tutorial/essential/io/objectstreams.html[/url]
subinterfaces of DataInput and DataOutput
[img]http://java.sun.com/docs/books/tutorial/figures/essential/io-trav.gif[/img]
持久化对象将持久化关联的对象
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.
如果是这样的情况,也只写入一次对象。写入2次对象的引用
得到一个对象的2个引用
[url]http://java.sun.com/docs/books/tutorial/essential/io/datastreams.html[/url]
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
[url]http://java.sun.com/docs/books/tutorial/essential/io/objectstreams.html[/url]
subinterfaces of DataInput and DataOutput
[img]http://java.sun.com/docs/books/tutorial/figures/essential/io-trav.gif[/img]
持久化对象将持久化关联的对象
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个引用