一、对面序列化过程 :将内存中的对象通过ObjectOutputStream转为二进制流,存储在硬盘文件中
对面序列化要满足的条件
1、对象所对应的类要实现Serializable接口
2、类的属性同样要实现Serializable接口
3、凡是实现Serializable接口都有一个表示序列化版本标识符的静态变量:
private static final long seriaVersionUID;来表示不同版本间的兼容性,
如果没有显示定义这个静态变量,它的值是Java运行时环境根据类的内部细节自动生成的,若类的源代码作了修改
,seriaVersionUID可能发生变化。建议显示声明。 确保不同版本相同的serialVersionUID.
- public void text(){
- File f2=new File("C:\\Users\\ASUS\\Desktop\\hello3.txt"); //保存路径
- people p=new people("12","花花");
- ObjectOutputStream f3=null;
- try {
- f3 = new ObjectOutputStream(new FileOutputStream(f2));
- f3.writeObject(p);
- f3.flush();
- } catch (FileNotFoundException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }finally{
- try {
- f3.close();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
- class people implements Serializable{
- public String name;
- public String arg;
- public people(String name,String arg){
- this.name=name;
- this.arg=arg;
- }
- public String toString(){
- return "people [name ="+name+",arg=" +arg+"]";
- }
- }
二、对面反序列化过程:将硬盘中的文件通过objectInputStream转换为相应的对象
- public void textInput(){
- ObjectInputStream f=null;
- people p=null;
- try {
- f = new ObjectInputStream(new FileInputStream("C:\\Users\\ASUS\\Desktop\\hello3.txt"));
- p = (people)f.readObject();
- } catch (FileNotFoundException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (ClassNotFoundException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- System.out.println(p);
- try {
- f.close();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- };
- class people implements Serializable{
- public String name;
- public String arg;
- public people(String name,String arg){
- this.name=name;
- this.arg=arg;
- }
- public String toString(){ //输出
- return "people [name ="+name+",arg=" +arg+"]";
- }
- }