集册 Java实例教程 使用ObjectInputStream和ObjectOutputStream将自定义对象保存到文件

使用ObjectInputStream和ObjectOutputStream将自定义对象保存到文件

欢马劈雪     最近更新时间:2020-01-02 10:19:05

500
使用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;

    }

}


展开阅读全文