Java-图书馆持久化

构造图书类,包含名称(字符串)、作者(字符串)、出版社(字符串)、版本号(整数)、价格(浮点数),构造图书馆类,其中包含若干图书,用容器存储图书对象,然后定义方法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;
 }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值