一道Java题,设已定义了一个Book类..

设已定义了一个Book类,该类包括书名bookName和单价price属性。编写程序定义一个方法writeToFile(Book[ ] b),利用ObjectOutputStream类的writeObject()方法将若干本书籍的信息写入到当前路径下的文件book.dat中;定义一个方法readFromFile(),利用ObjectInputStream类的readObject()方法将若干本书籍的信息从当前路径下的文件book.dat中读出。


import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;

public class 保存图书信息 {

    public static void main(String[] args) {

        Books b1 = new Books("JAVA",99);
        Books b2 = new Books("JSP",78);
        Books b3 = new Books("C++",82);
        Books b4 = new Books("MYSQL",68);
        Books arr[] = {b1,b2,b3,b4};
        
        保存图书信息 bookInfo = new 保存图书信息();
        bookInfo.writeToFile(arr);
        bookInfo.readObject();
    }
    
    void writeToFile(Books[] b) {
        try {
            File file = new File("books.dat");
            ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(file));
            oos.writeObject(b);
            oos.close();
            
        }catch(Exception e) {
            e.printStackTrace();
        }
    }
    void readObject() {
        try {
            File file = new File("books.dat");
            ObjectInputStream ois = new ObjectInputStream(new FileInputStream(file));
            Books[] arr = (Books[])ois.readObject();
            for(Books book :arr) {
                System.out.println(book);
            }
            ois.close();
            
        }catch(Exception e) {
            e.printStackTrace();
        }
    }

}

class Books implements Serializable{
    private String bookName;
    private float price;
    public Books() {}
    public Books(String bookName,float price) {
        this.bookName = bookName;
        this.price = price;
    }
    
    public String getBookName() {
        return bookName;
    }
    public void setBookName(String bookName) {
        this.bookName = bookName;
    }
    public float getPrice() {
        return price;
    }
    public void setPrice(float price) {
        this.price = price;
    }
    @Override
    public String toString() {
        return "书名:"+bookName+",价格:" + price;
    }
}

Book 类如下:

public class Book implements Serializable {

    private String bookName;

    private Double price;

    public Book(String bookName, Double price) {
        this.bookName = bookName;
        this.price = price;
    }

    public String getBookName() {
        return bookName;
    }

    public void setBookName(String bookName) {
        this.bookName = bookName;
    }

    public Double getPrice() {
        return price;
    }

    public void setPrice(Double price) {
        this.price = price;
    }

    @Override
    public String toString() {
        return "Book{" +
                "bookName='" + bookName + '\'' +
                ", price=" + price +
                '}';
    }
}

测试代码如下:

public class Test {

    public static void main(String[] args) throws IOException, ClassNotFoundException {
        Book[] b = new Book[]{new Book("b1", 1d), new Book("b2", 2d)};
        writeToFile(b);
        Book[] newB = readFromFile();
        System.out.println(Arrays.toString(newB));
    }

    public static void writeToFile(Book[] b) throws IOException {
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("book.dat"));
        oos.writeObject(b);
        oos.close();
    }

    public static Book[] readFromFile() throws IOException, ClassNotFoundException {
        ObjectInputStream ois = new ObjectInputStream(new FileInputStream("book.dat"));
        Book[] b = (Book[]) ois.readObject();
        return b;
    }
}

运行效果如下:

img

如有帮助,请采纳。