将对象得状态存储到特定存储介质中的过程叫对象的序列化
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);
}
}