For example to write an object that can be read by the example in ObjectInputStream:
FileOutputStream ostream = new FileOutputStream("t.tmp");
ObjectOutputStream p = new ObjectOutputStream(ostream); p.writeInt(12345);
p.writeObject("Today");
p.writeObject(new Date()); p.flush();
ostream.close();
FileOutputStream ostream = new FileOutputStream("t.tmp");
ObjectOutputStream p = new ObjectOutputStream(ostream); p.writeInt(12345);
p.writeObject("Today");
p.writeObject(new Date()); p.flush();
ostream.close();
ObjectInputStream p = new ObjectInputStream(istream); int i = p.readInt();
String today = (String)p.readObject();
Date date = (Date)p.readObject(); istream.close();
//: Worm.java
import java.io.*;class Data implements Serializable {
private int i;
Data(int x) { i = x; }
public String toString() {
return Integer.toString(i);
}
}public class Worm implements Serializable {
// Generate a random int value:
private static int r() {
return (int)(Math.random() * 10);
}
private Data[] d = {
new Data(r()), new Data(r()), new Data(r())
};
private Worm next;
private char c;
// Value of i == number of segments
Worm(int i, char x) {
System.out.println(" Worm constructor: " + i);
c = x;
if(--i > 0)
next = new Worm(i, (char)(x + 1));
}
Worm() {
System.out.println("Default constructor");
}
public String toString() {
String s = ":" + c + "(";
for(int i = 0; i < d.length; i++)
s += d[i].toString();
s += ")";
if(next != null)
s += next.toString();
return s;
}
public static void main(String[] args) {
Worm w = new Worm(6, 'a');
System.out.println("w = " + w);
try {
ObjectOutputStream out =
new ObjectOutputStream(
new FileOutputStream("worm.out"));
out.writeObject("Worm storage");
out.writeObject(w);
out.close(); // Also flushes output
ObjectInputStream in =
new ObjectInputStream(
new FileInputStream("worm.out"));
String s = (String)in.readObject();
Worm w2 = (Worm)in.readObject();
System.out.println(s + ", w2 = " + w2);
} catch(Exception e) {
e.printStackTrace();
}
try {
ByteArrayOutputStream bout =
new ByteArrayOutputStream();
ObjectOutputStream out =
new ObjectOutputStream(bout);
out.writeObject("Worm storage");
out.writeObject(w);
out.flush();
ObjectInputStream in =
new ObjectInputStream(
new ByteArrayInputStream(
bout.toByteArray()));
String s = (String)in.readObject();
Worm w3 = (Worm)in.readObject();
System.out.println(s + ", w3 = " + w3);
} catch(Exception e) {
e.printStackTrace();
}
}
} ///:~
怎么把这样的对象写入文件?
public class SQLInfo implements java.io.Serializable {
private Vector sqlRequestInfo;
public void addRequestItem(String name, String defination) {
sqlRequestInfo.addElement(new SQLRequestItem(name, defination));
}
}
因为sqlRequestInfo是Vector的,是复杂型,在写入前进行一些操作(比方执行addRequestItem方法)就出错。
private Vector sqlRequestInfo = new Vector();