构造图书类,包含名称(字符串)、作者(字符串)、出版社(字符串)、版本号(整数)、价格(浮点数),构造图书馆类,其中包含若干图书,用容器存储图书对象,然后定义方法void
addBook(Book b)添加图书对象,定义方法void
persist(),将所有图书存至本地文件books.dat里,定义方法Book[] restore()
从文件books,dat中读取所有图书,并返回图书列表数组。
main函数中构造图书馆类对象,向其中添加3个图书对象,测试其persist和restore方法。(注意,请使用对象序列化方法实现)
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
Scanner scanner=new Scanner(System.in);
Library L=new Library();
Book b1=new Book("图书1","作者1","出版社1",1,100);
Book b2=new Book("图书2","作者2","出版社2",2,200);
Book b3=new Book("图书3","作者3","出版社3",3,300);
L.addBook(b1);
L.addBook(b2);
L.addBook(b3);
L.persist();
Book b[]=L.restore();
for(int i=0;i<L.n;i++)
{
System.out.println(b[i].toString());
}
scanner.close();
}
}
class Book {
String name;
String editor;
String press;
int level;
float price;
public Book(String name,String editor,String press,int level,float price) {
this.name=name;
this.editor=editor;
this.press=press;
this.level=level;
this.price=price;
}
@Override
public String toString() {
return name+" "+editor+" "+press +" "+level+" "+price;
}
}
class Library {
Book[] book=new Book[100000];
int n=0;
public void addBook(Book b) {
book[n]=b;
n++;
}
public void persist() throws IOException {
int t=0;
File file=new File("src\\books.dat");
if(!file.exists()) {
file.createNewFile();//如果文件不存在,创建新文件
}
FileWriter fw=new FileWriter(file);
while(t<n)
{
fw.write(book[t].toString());
fw.write("\n");
t++;
}
fw.flush();
fw.close();
}
public Book[] restore() throws IOException {
Library L=new Library();
File file=new File("src\\books.dat");
if(!file.exists()) {
file.createNewFile();//如果文件不存在,创建新文件
}
BufferedReader input=null;
input=new BufferedReader(new InputStreamReader(new FileInputStream("src\\books.dat")));
String s=input.readLine();//读入一行文字
while(s!=null)
{
String[] s1=s.split(" ");
Book b=new Book(s1[0],s1[1],s1[2],Integer.parseInt(s1[3]),Float.parseFloat(s1[4]));
L.addBook(b);
s=input.readLine();
}
input.close();
return L.book;
}
}