IO编程之对象序列化
2024-09-07 09:30:35
对象序列化的目标是将对象保存在磁盘中或者允许在网络中直接传输对象。对象序列化机制循序把内存中的java对象转换成平台无关的二进制流,从而允许把这种二进制流持久的保存在磁盘上,通过网络将这种二进制流传输到另一个网络节点。其他程序一旦获得了这种二进制流,都可以将这种二进制流恢复成原来的java对象。
对象序列化样例:
public class People implements Serializable { public People(String name,String sex) {
this.name = name;
this.sex = sex;
} private String name ;
private String sex; public String getName() {
return name;
}
public String getSex() {
return sex;
}
@Override
public String toString() {
return "我的名字:"+name+" "+"我的性别是:"+sex;
} } public class SerializableTest { /**
* 对象序列化到磁盘文件中
*/
@Test
public void writeObject() {
try (
//ObjectOutputStream是一个处理流,构造的时候需要节点流
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("G://test//people.txt"));
)
{
oos.writeObject(new People("张三","男"));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} /**
* 反序列化
*
*/
@Test
public void readObject() { try (
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("G://test//people.txt"));
)
{
People p = (People)ois.readObject();
System.out.println(p.toString());
} catch (Exception e) {
e.printStackTrace();
}
} }
对象引用的序列化:如果有一个类的的属性是应用类型,那么这个引用类必须是可序列化的。当序列化该类时,程序会顺便属性字段的对象也进行序列化。
如果某个类含有敏感信息,例如银行账户信息等,这时不希望系统将该字段序列化,则通过transient关键字修饰Field,则该Field不会被序列化。
最新文章
- discuz模板语法
- .Net Core Linux centos7行—安装nginx,运行静态网站
- chkdsk磁盘修复命令工具怎么用,怎样运行chkdsk工具修复?
- Myeclipse如何关联源码
- python数字图像处理(11):图像自动阈值分割
- web.xml配置详解之listener与context-param
- Linux企业级开发技术(6)——libevent企业级开发之内存管理
- PHP安全编程:会话数据注入 比会话劫持更强大的攻击(转)
- JavaFX横幅类游戏开发 教训 游戏贴图
- CSS3详解:transform、transition
- Hi3531用SPI FLASH启动 使用Nand做文件系统
- java的Integer与int的比较
- 4年前端、2年CTO:一个非科班程序员的真实奋斗史
- flex-骰子布局
- ASP.NET Core快速入门学习笔记(第1章:介绍与引入)
- “tar: Removing leading `/’ from member names”的错误
- sh命令
- 【1】BIO,NIO,AIO与Reactor,Proactor
- Selenium Web 自动化 - 项目实战(二)
- wordpress去掉<;link rel=&#39;dns-prefetch&#39; href=&#39;//s.w.org&#39; />;