使用ObjectInputStream和ObjectOutputStream将自定义对象保存到文件
import java.io.Serializable; import java.io.*; /* N o w J a v a . c o m - 时代Java 提 供 */ public class CardReader { public static void main(String[] args) { Card3 card = new Card3(12, Card3.SPADES); System.out.println("Card to write is: " + card); try { FileOutputStream out = new FileOutputStream("card.out"); ObjectOutputStream oos = new ObjectOutputStream(out); oos.writeObject(card); oos.flush(); } catch (Exception e) { System.out.println("Problem serializing: " + e); } try {/* from nowjava - 时代Java*/ FileInputStream in = new FileInputStream("card.out"); ObjectInputStream ois = new ObjectInputStream(in); card = (Card3) (ois.readObject()); } catch (Exception e) { System.out.println("Problem serializing: " + e); } System.out.println("Card read is: " + card); } } class Card3 implements Serializable { private int suit = UNASSIGNED; private int number = UNASSIGNED; public final static int UNASSIGNED = -1; public final static int DIAMONDS = 1; public final static int CLUBS = 2; public final static int HEARTS = 3; public final static int SPADES = 4; public final static int ACE = 1; public final static int KING = 13; public Card3(int number, int suit) { if (isValidNumber(number)) { this.number = number; } else { //Error } if (isValidSuit(suit)) { this.suit = suit; } else { //Error } } public int getSuit() { return suit; } public int getNumber() { return number; } public static boolean isValidNumber(int number) { if (number >= ACE && number <= KING) { return true; } else { return false; } } public static boolean isValidSuit(int suit) { if (suit >= DIAMONDS && suit <= SPADES) { return true; } else { return false; } } public boolean equals(Object obj) { if (obj instanceof Card3) { Card3 card = (Card3) obj; if (card.getNumber() == this.number && card.getSuit() == this.suit) { return true; } else { return false; } } else { return false; } } public int hashCode() { return number * suit; } public String toString() { return numberToString(this.number) + " of " + suitToString(this.suit); } public static String numberToString(int number) { String result = ""; switch (number) { case ACE: result = "Ace"; break; case 2: result = "Two"; break; case 3: result = "Three"; break; case 4: result = "Four"; break; case 5: result = "Five"; break; case 6: result = "Six"; break; case 7: result = "Seven"; break; case 8: result = "Eight"; break; case 9: result = "Nine"; break; case 10: result = "Ten"; break; case 11: result = "Jack"; break; case 12: result = "Queen"; break; case KING: result = "King"; break; case UNASSIGNED: result = "Invalid Number"; break; } return result; } public static String suitToString(int suit) { String result = ""; switch (suit) { case DIAMONDS: result = "Diamonds"; break; case CLUBS: result = "Clubs"; break; case HEARTS: result = "Hearts"; break; case SPADES: result = "Spades"; break; case UNASSIGNED: result = "Invalid Suit"; break; } return result; } }