完成序列化和反序列化的一个集合操作,集合对象中要求保存2个用户对象
2017-11-22 22:37
447 查看
package firstExam.fifth;
/**
* 完成序列化和反序列化的一个集合操作,集合对象中要求保存2个用户对象
*/
import java.io.Closeable;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.Flushable;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.ObjectStreamException;
import java.util.ArrayList;
import java.util.List;
/**
*可以写入输入流中的对象称为可序列化的,可序列化的对象的类必须实现Serializable接口,该接口是一种标记接口,
*因为它没有任何方法,实现这个接口可以启动Java的序列化机制,自动完成存储对象和数组的过程。
*Java提供一个内在机制自动完成写对象的过程,该过程称为对象序列化,它是在ObjectOutputStream中实现的;
*与此相反,读取对象的过程称为对象反序列化,它是在ObjectInputStream类中实现的。
*/
/**
* 并不是每一个对象都可以写入到输出流,试图存储一个不支持Serializable接口的对象会引起一个
* NotSerializableException,
* NotSerializableException extends ObjectStreamException,
* ObjectStreamException extends IOException
*
*/
public class Test {
public static void main(String[]args){
Flower f1=new Flower(1,”rose”,2);
Flower f2=new Flower(2,”flower”,3);
List flowerList=new ArrayList<>();
flowerList.add(f1);
flowerList.add(f2);
serializable(flowerList);
non_serializable(flowerList);
}
}
package firstExam.fifth;
import java.io.Serializable;
public class Flower implements Serializable {
}
/**
* 完成序列化和反序列化的一个集合操作,集合对象中要求保存2个用户对象
*/
import java.io.Closeable;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.Flushable;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.ObjectStreamException;
import java.util.ArrayList;
import java.util.List;
/**
*可以写入输入流中的对象称为可序列化的,可序列化的对象的类必须实现Serializable接口,该接口是一种标记接口,
*因为它没有任何方法,实现这个接口可以启动Java的序列化机制,自动完成存储对象和数组的过程。
*Java提供一个内在机制自动完成写对象的过程,该过程称为对象序列化,它是在ObjectOutputStream中实现的;
*与此相反,读取对象的过程称为对象反序列化,它是在ObjectInputStream类中实现的。
*/
/**
* 并不是每一个对象都可以写入到输出流,试图存储一个不支持Serializable接口的对象会引起一个
* NotSerializableException,
* NotSerializableException extends ObjectStreamException,
* ObjectStreamException extends IOException
*
*/
public class Test {
public static void main(String[]args){
Flower f1=new Flower(1,”rose”,2);
Flower f2=new Flower(2,”flower”,3);
List flowerList=new ArrayList<>();
flowerList.add(f1);
flowerList.add(f2);
serializable(flowerList);
non_serializable(flowerList);
}
public static void serializable(List<Flower> list){ try { ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream("serializable.txt")); //此处为增强for循环,结果等同于②处的普通for循环 for(Flower f:list){//----① oos.writeObject(f); } //OutputStream implements Closeable, Flushable oos.flush(); oos.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public static void non_serializable(List<Flower> list){ try { ObjectInputStream ois=new ObjectInputStream(new FileInputStream("serializable.txt")); //此处为普通for循环,结果等同于①处的增强for循环 for(int i=0;i<list.size();i++){//----② //从文件读取对象,并将其输出 Flower f=(Flower)ois.readObject(); System.out.println(f); } //InputStream implements Closeable ois.close(); }catch (ClassNotFoundException e) { e.print 4000 StackTrace(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }
}
package firstExam.fifth;
import java.io.Serializable;
public class Flower implements Serializable {
private int id; private String name; private int age; public Flower(){ } public Flower(int id,String name,int age){ this.id=id; this.name=name; this.age=age; } public int getId(){ return id; } public void setId(int id){ this.id=id; } public String getName(){ return this.name; } public void setName(String name){ this.name=name; } public int getAge(){ return this.age; } public void setAge(int age){ this.age=age; } @Override public boolean equals(Object obj) { if(obj instanceof Flower){ Flower flower=(Flower)obj; return this.name.equals(flower.name); }else return false; } @Override public String toString() { return "Flower(id="+id+",name="+name+",age="+age+")"; }
}
相关文章推荐
- unserialize的这个问题是由一个emlog论坛用户在使用时报错而发现的 问题表现情况如下: emlog缓存的保存方式是将php的数据对象(数组)序列化(serialize)后以文件的形式存放,
- 通过序列化和反序列化泛型数据实体集合来实现持久化数据对象的方法
- 完成一个学生管理程序,使用学号作为键添加5个学生对象,并可以将全部信息保存在文件中,可以实现对学生信息的学号查找,输出全部学生信息的功能。
- Java基础(15):IO流—掌握对象序列化和反序列化操作
- 用对象序列化与文件读写保存用户的设置
- 完成一个学生管理程序,使用学号作为键添加5个学生对象,并可以将全部信息保存在文件中,可以实现对学生信息的学号查找,输出全部学生信息的功能。
- IOS文件操作和自定义对象的归档(序列化)、反归档(反序列化)
- 今天无意中发现JavaBean类基本都要求实现了Serializable接口,以前只是知道序列化以后,可以通过io流的方式将对象序列化和反序列化,进行存取,但不知道为什么需要序列化,今天总结一下
- 分享一个对象序列化为XML和反序列化的扩展方法
- 自己封装的一个文件目录操作用户对象
- 将一个业务实体对象序列化并保存到站点的指定目录下
- java中的序列化与反序列化,还包括将多个对象序列化到一个文件中
- Protostuff 序列化/反序列化集合等对象
- 假设利用两个线性表La和Lb分别表示两个集合A和B(即线性表中的数据元素即为集合中的成员),现要求一个新的 集合A=AUB。这就要求对线性表作如下操作:扩大线性表La,将存在于线性表Lb中而不存在于线
- java对象序列化和反序列化操作记录
- 一个经过改良的XMLHelper(包含了序列化,反序列化,创建xml文件,读取节点,C#对象与xml文件的相互转换等等。)
- 完成一个学生管理程序,使用学号作为键添加5个学生对象,并可以将全部信息保存在文件中,可以实现对学生信息的学号查找,输出全部学生信息的功能。
- Promise对象(1)对象的状态不受外界影响。Promise对象代表一个异步操作,有三种状态:Pending(进行中)、Resolved(已完成,又称 Fulfilled)和Rejected(已失败
- java 使用xom对象数据序列化为xml、反序列化、Preferences相关操作小案例
- 完成一个100到200的平方,并将结果保存在一个数组中,要求输出的结果每三个换一行