设已定义了一个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;
}
}
运行效果如下:
如有帮助,请采纳。