ObjectInputStream和ObejctOutputStream的作用是:对基本数据和对象进行序列化支持.
ObjectOutputStream提供对"基本数据对象"的持久存储.ObjectInputStream提供对"基本数据对象"的读取.
public class ObjectStreamTest { private static final String PATH = "D:\baiduyun\filetest\rrr.txt"; public static void main(String[] args) throws Exception { testWrite(); testRead(); } public static void testWrite() throws FileNotFoundException, IOException { ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(new File(PATH))); out.writeBoolean(true); out.writeByte((byte) 65); out.writeChar('a'); out.writeInt(20131015); out.writeFloat(3.14F); out.writeDouble(1.414D); // 写入HashMap对象 HashMap map = new HashMap(); map.put("one", "red"); map.put("two", "green"); map.put("three", "blue"); out.writeObject(map); // 写入自定义的Box对象,Box实现了Serializable接口 Box box = new Box("desk", 80, 48); out.writeObject(box); out.close(); } public static void testRead() throws FileNotFoundException, IOException, ClassNotFoundException { ObjectInputStream in = new ObjectInputStream(new FileInputStream(PATH)); System.out.printf("boolean:%b ", in.readBoolean()); System.out.printf("byte:%d ", (in.readByte() & 0xff)); System.out.printf("char:%c ", in.readChar()); System.out.printf("int:%d ", in.readInt()); System.out.printf("float:%f ", in.readFloat()); System.out.printf("double:%f ", in.readDouble()); // 读取HashMap对象 HashMap map = (HashMap) in.readObject(); Iterator iter = map.entrySet().iterator(); while (iter.hasNext()) { Map.Entry entry = (Map.Entry) iter.next(); System.out.printf("%-6s -- %s ", entry.getKey(), entry.getValue()); } // 读取Box对象,Box实现了Serializable接口 Box box = (Box) in.readObject(); System.out.println("box: " + box); in.close(); } static class Box implements Serializable { private int width; private int height; private String name; public Box(String name, int width, int height) { this.name = name; this.width = width; this.height = height; } @Override public String toString() { return "[" + name + ": (" + width + ", " + height + ") ]"; } } }