应⽤对象序列化和对象反序列化向⽂件写⼊对象,并将对象读取出来输⼊到控制台上(java小作业)
一、任务要求:
1、创建Product类,并声明它的属性:ID,name,categories,price
2、实现Serializable接⼝;
3、定义Product类构造⽅法;
4、在Test类⾥⾯,创建Product类的对象:iphone,ipad,macbook,iwatch
5、实例化对象输⼊流和对象输出流;
6、写⼊Product类的四个对象;
7、从⽂件⾥读取四个product类的四个对象。
二、实现代码
1.Product.java
import java.io.Serializable;
public class Product implements Serializable {
private int ID;
private String name;
private String categories;
private Double price;
public Product() {
}
public Product(int iD, String name, String categories, Double price) {
super();
ID = iD;
this.name = name;
this.categories = categories;
this.price = price;
}
public int getID() {
return ID;
}
public void setID(int iD) {
ID = iD;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCategories() {
return categories;
}
public void setCategories(String categories) {
this.categories = categories;
}
public Double getPrice() {
return price;
}
public void setPrice(Double price) {
this.price = price;
}
@Override
public String toString() {
return "产品ID:" + ID + "\n产品名称:" + name + "\n产品属性:" + categories + "\n产品价格:" + price + "元";
}
}
2.ProductTest.java
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
public class ProductTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
Product iphone = new Product(123, "iphone", "telephone", 4888.0);
Product ipad = new Product(234, "ipd", "computer", 5088.0);
Product macbook = new Product(345, "macbook", "computer", 10688.0);
Product iwatch = new Product(256, "iwatch", "watch", 4799.0);
try {
FileOutputStream fos = new FileOutputStream("product.txt");
ObjectOutputStream oos = new ObjectOutputStream(fos);
FileInputStream fis = new FileInputStream("product.txt");
ObjectInputStream ois = new ObjectInputStream(fis);
oos.writeObject(iphone);
oos.writeObject(ipad);
oos.writeObject(macbook);
oos.writeObject(iwatch);
oos.flush();
System.out.println("apple系列产品信息");
//方式3输出产品信息
//循环4次把对象从文件中读出来
for(int i=0;i<4;i++) {
Product pro = (Product) ois.readObject();
System.out.println(pro);
System.out.println();
}
//方式2输出产品信息
// fis.available()指把文件的所有对象都找到,直到没有找到之后结束。
// while(fis.available()>0) {
// System.out.println(fis.available());
// Product pro = (Product) ois.readObject();
// System.out.println(pro);
// System.out.println();
// }
// 方式1输出产品信息
// Product pro = (Product) ois.readObject();
// Product pro1= (Product) ois.readObject();
// Product pro2 = (Product) ois.readObject();
// Product pro3 = (Product) ois.readObject();
// System.out.println("apple系列产品信息");
// System.out.println(pro);
// System.out.println();
//
// System.out.println(pro1);
// System.out.println();
//
// System.out.println(pro2);
// System.out.println();
//
// System.out.println(pro3);
// System.out.println();
oos.close();
fos.close();
ois.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}