您的位置:首页 > 编程语言 > Java开发

java中ObjectOutputStream保存对象

2019-05-12 10:49 246 查看
package com.javabase.p1;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.io.Serializable;

public class Demoobjout {

//Java语言只能将实现了Serializable接口的类的对象保存到文件中
public static void main(String[] args)  {
String str = "我想去海南吃龙虾";
String path = "c:/100.dat";
String sname = "王小美";
int age = 30;

Person p = new Person(sname,age,str);
//写入并保存对象
sWriteObj(p,path);
System.out.println("对象已写入硬盘");

Person p101 = null;
//从磁盘读取对象
p101 = sReadObj(path);
if(p101 == null) {
System.out.println("读取对象错误");
}else {
System.out.println(p101.getsName() +"   "+ p101.getIage() + "    " +p101.getStr());
//比较两个对象的地址是否一样
System.out.println(p == p101);

}

}

/**
* 写入对象到硬盘
* @param pSon 需要保存的对象
* @param path 路径 全名
*/
public static void sWriteObj(Person pSon,String path)  {

OutputStream ops = null;
ObjectOutputStream oos = null;
try {
ops = new FileOutputStream(path);
oos = new ObjectOutputStream(ops);
oos.writeObject(pSon);
} catch (FileNotFoundException e) {
e.printStackTrace();
}catch (IOException e) {
e.printStackTrace();
}finally {
try {
oos.close();
ops.close();
} catch (IOException e) {
e.printStackTrace();
}

}

}

/**
* 读取对象
* @param path 全路径
* @return 返回 Person对象
*/
public static Person sReadObj(String path)  {
Person pSon = null;
try(
InputStream is = new FileInputStream(path);
ObjectInputStream ois = new ObjectInputStream(is);

) {
pSon = (Person)ois.readObject();

} catch (Exception e) {
//出错返回null
return null;
}

return pSon;

}

}

//Java语言只能将实现了Serializable接口的类的对象保存到文件中
//要保存的对象类必须实现 Serializable 接口
class  Person implements Serializable{

private static final long serialVersionUID = -3836658895819502595L;
private String str = null;
private String sName = null;
private int iage = 0;

public  Person() {}

public Person(String name,int age,String s) {
setsName(name);
setIage(age);
setStr(s);
}

public String getStr() {
return str;
}

public void setStr(String str) {
this.str = str;
}

public String getsName() {
return sName;
}
public void setsName(String sName) {
this.sName = sName;
}
public int getIage() {
return iage;
}
public void setIage(int iage) {
this.iage = iage;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐