控制台程序。
首先定义一个含有任意不同数据类型域的可序列化类:
1 import java.io.Serializable; 2 3 public class Junk implements Serializable { 4 private static java.util.Random generator = new java.util.Random(); 5 private int answer; // The answer 6 private double[] numbers; // Valuable data 7 private String thought; // A unique thought 8 private static final long serialVersionUID = 9001L; 9 10 public Junk(String thought) { 11 this.thought = thought; 12 answer = 42; // Answer always 42 13 14 numbers = new double[3 + generator.nextInt(4)]; // Array size 3 to 6 15 for(int i = 0 ; i < numbers.length ; ++i) { // Populate with 16 numbers[i] = generator.nextDouble(); // random values 17 } 18 } 19 20 @Override 21 public String toString() { 22 StringBuffer strBuf = new StringBuffer(thought); 23 strBuf.append(' ').append(String.valueOf(answer)); 24 for(int i = 0 ; i < numbers.length ; i++) { 25 strBuf.append(" numbers[") 26 .append(String.valueOf(i)) 27 .append("] = ") 28 .append(numbers[i]); 29 } 30 return strBuf.toString(); 31 } 32 }
然后使用如下程序能将这个类类型的对象写入到文件中:
1 import java.io.*; 2 import java.nio.file.*; 3 import java.io.IOException; 4 5 public class SerializeObjects { 6 public static void main(String[] args) { 7 Junk obj1 = new Junk("A green twig is easily bent."); 8 Junk obj2 = new Junk("A little knowledge is a dangerous thing."); 9 Junk obj3 = new Junk("Flies light on lean horses."); 10 11 Path file = Paths.get(System.getProperty("user.home")).resolve("Beginning Java Struff").resolve("JunkObjects.bin"); 12 try { 13 Files.createDirectories(file.getParent()); // Make sure we have the directory 14 } catch (IOException e) { 15 e.printStackTrace(); 16 System.exit(1); 17 } 18 19 try (ObjectOutputStream objectOut = new ObjectOutputStream(new BufferedOutputStream(Files.newOutputStream(file)))){ 20 // Write three objects to the file 21 objectOut.writeObject(obj1); // Write object 22 objectOut.writeObject(obj2); // Write object 23 objectOut.writeObject(obj3); // Write object 24 System.out.println(" obj1: " + obj1 25 +" obj2: " + obj2 26 +" obj3: " + obj3); 27 28 } catch(IOException e) { 29 e.printStackTrace(); 30 } 31 } 32 }