将对象得状态存储到特定存储介质中的过程叫对象的序列化 1. 支持可序列化实现接口Java.io.serializable接口 2. 对象序列化的步骤 - 创建一个对象输出流-objectoutputstream - readobject读取流中的类容 1. 购物:
import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.util.ArrayList; import java.util.Random; import java.util.Scanner; public class SerGood { public static void main(String[] args) { // 组方法 int i=0; SerGood sg=new SerGood(); sg.createDepositFile(); ArrayList<Good> goodList=new ArrayList<Good>(); System.out.println("开始购物:"); Scanner scanner=new Scanner(System.in); do { System.out.println("请通过输入商品名来选择你需要的东西:"); String good_Name=scanner.next(); Random random=new Random(); double price=random.nextDouble()*90+10; String number=String.valueOf(random.nextInt(10)); Good good=new Good(number,good_Name,price); if(sg.checkOrder(good)) { i=1; goodList.add(good); }else { System.out.println("你已经买过这件商品!"); } sg.createOrderFile(goodList); System.out.println("是否继续购物y/n"); if(scanner.next().equals("n")) { break; } }while(true); sg.showOrder(); System.out.println("欢迎再次光临!"); } ArrayList<Good> list; public void createDepositFile(){ File file=new File("E:/javaworkspace/old/save.txt"); if(!file.exists()) { try { ObjectOutputStream oos=new ObjectOutputStream( new FileOutputStream("E:/javaworkspace/old/save.txt")); oos.writeObject(" "); oos.flush(); oos.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }else { System.out.println("有此文件"); } } public void createOrderFile(ArrayList<Good> list) { try { ObjectOutputStream oos=new ObjectOutputStream( new FileOutputStream("E:/javaworkspace/old/save.txt")); oos.writeObject(list); oos.flush(); oos.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public Object readOrder() { try { ObjectInputStream ois=new ObjectInputStream( new FileInputStream("E:/javaworkspace/old/save.txt")); Object obj=ois.readObject(); ois.close(); if(obj!=null) { return obj; }else { return null; } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } public boolean checkOrder(Good good) { boolean bool=true; SerGood sg=new SerGood(); Object obj=sg.readOrder(); if(obj!=null) { @SuppressWarnings("unchecked") ArrayList<Good> list=(ArrayList<Good>) obj; for (Good good2 : list) { if(good2.getGood_Name().equals(good.getGood_Name())) { bool=false; } } } return bool; } public void showOrder() { double price=0; SerGood sg=new SerGood(); Object obj=sg.readOrder(); if(obj!=null) { @SuppressWarnings("unchecked") ArrayList<Good> list=(ArrayList<Good>) obj; for (Good good2 : list) { System.out.println("你的购物单信息如下:\n商品编号——"+good2.getGood_Number() +"\t商品名称——"+good2.getGood_Name()+"\t商品价格——"+good2.getGood_Price()); price+= good2.getGood_Price(); } } System.out.println("商品的总价格为:"+price); } }