Java Io 对象序列化和反序列化
Java 支持将任何对象进行序列化操作,序列化后的对象文件便可通过流进行网络传输。
1. 对象序列化就是将对象转换成字节序列,反之叫对象的反序列化
2. 序列化流ObjectOutputStream
3. 反序列化流 OjbectInputStream
4. 序列化的对象必须实现一个接口 Serializable
5. 如果在对象中不想序列化某个字段,那么可以在该字段中添加transient关键字
6. 对子类进行序列化操作时,父类的构造函数会被递归调用
7. 对子类进行反序列操作时,如果父类没有实现序列化接口那么父类的构造函数会被调用
写一个将Users对象序列化和反序列化的事例:
package com.dcz.io; import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream; public class ObjectSerializableDemo { public static void main(String[] args) throws Exception { // 序列化对象
File writeObjectFile = new File("d:\\users.dat");
if(!writeObjectFile.exists()){
writeObjectFile.createNewFile();
}
OutputStream fileOutputStream = new FileOutputStream(writeObjectFile);
ObjectOutputStream oos = new ObjectOutputStream(fileOutputStream); Users user = new Users("admin","123456","管理员用户");
oos.writeObject(user);
oos.flush();
oos.close(); // 反序列化对象
File readerObjectFile = new File("d:\\users.dat");
InputStream fileInputStream = new FileInputStream(readerObjectFile);
ObjectInputStream ois = new ObjectInputStream(fileInputStream);
Users user2 = (Users)ois.readObject();
System.out.println(user2); } }
package com.dcz.io;
import java.io.Serializable;
public class Users implements Serializable{
private static final long serialVersionUID = 4345979997811128454L;
private String username;
private String password;
private String describe;
public Users(){}
public Users(String username, String password, String describe) {
super();
this.username = username;
this.password = password;
this.describe = describe;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getDescribe() {
return describe;
}
public void setDescribe(String describe) {
this.describe = describe;
}
@Override
public String toString() {
return "Users [username=" + username + ", password=" + password
+ ", describe=" + describe + "]";
}
}
如果不想默认序列化,想自定义序列化操作和反序列化操作就添加方法
private void writeObject(java.io.ObjectOutputStream s)
throws java.io.IOException{
// 在这里做处理序列化
}
private void readObject(java.io.ObjectInputStream s)
throws java.io.IOException, ClassNotFoundException {
// 在这里做处理反序列化
}
Java Io 对象序列化和反序列化的更多相关文章
- Java之对象序列化和反序列化
一.对象序列化和反序列化存在的意义: 当你创建对象,只要你需要,他就一直存在,但当程序结束,对象就会消失,但是存在某种情况,如何让程序在不允许的状态,仍然保持该对象的信息.并在下次程序运行的时候使用该 ...
- java 对象序列化与反序列化
Java序列化与反序列化是什么? 为什么需要序列化与反序列化? 如何实现Java序列化与反序列化? 本文围绕这些问题进行了探讨. 1.Java序列化与反序列化 Java序列化是指把Java对象转换为 ...
- Java 序列化 对象序列化和反序列化
Java 序列化 对象序列化和反序列化 @author ixenos 对象序列化是什么 1.对象序列化就是把一个对象的状态转化成一个字节流. 我们可以把这样的字节流存储为一个文件,作为对这个对象的复制 ...
- Java对象序列化和反序列化的工具方法
import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import ja ...
- Java对象序列化与反序列化
对象序列化的目标是将对象保存在磁盘中或者在网络中进行传输.实现的机制是允许将对象转为与平台无关的二进制流. java中对象的序列化机制是将允许对象转为字节序列.这些字节序列可以使Java对象脱离程序存 ...
- java中的序列化与反序列化,还包括将多个对象序列化到一个文件中
package Serialize; /** * Created by hu on 2015/11/7. */ //实现序列化必须实现的接口,这就是一个空接口,起到标识的作用 import java. ...
- Java对象序列化与反序列化一 JSON
Java对象序列化与反序列化一 JSON 1. 依赖库 jackson-all-1.6.1.jar 2. 代码 public class Student { private String nam ...
- 【Java基础】序列化与反序列化深入分析
一.前言 复习Java基础知识点的序列化与反序列化过程,整理了如下学习笔记. 二.为什么需要序列化与反序列化 程序运行时,只要需要,对象可以一直存在,并且我们可以随时访问对象的一些状态信息,如果程序终 ...
- 【Java】Java原生的序列化和反序列化
写一个Java原生的序列化和反序列化的DEMO. 需序列化的类: package com.nicchagil.nativeserialize; import java.io.Serializable; ...
随机推荐
- NOIp 0910 爆零记
这套题是神犇chty出的. 刚拿到题的时候有点懵逼,因为按照一般的套路第一题都是一眼题,但是看到第一题后想了很多个算法和数据结构好像都不能很好的解决.然后就随手敲了个暴力去看T2. 嗯...文件名是b ...
- 深入理解javascript中执行环境(作用域)与作用域链
深入理解javascript中执行环境(作用域)与作用域链 相信很多初学者对与javascript中的执行环境与作用域链不能很好的理解,这里,我会按照自己的理解同大家一起分享. 一般情况下,我们把执行 ...
- api get
http://ibi.imim.es/befree/ http://disgenet.org/ http://rest.ensembl.org/ { "variantSetId": ...
- assert()函数用法总结
assert()函数用法总结 assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行,原型定义: #include <assert.h> ...
- IPcamera
1.IPcamera 一般架构 IPcamera产品其实是一个小型的对外直播系统,一般通过rtsp协议将音视频数据传输到PC端播放器,通过rtmp协议将音视频数据传输到移动端播放器,当然有些还支持P2 ...
- iOS项目重命名以及Xcode修改Scheme名称图文详解 (yoowei)
在iOS开发中,有时候想改一下项目的名字,都会遇到很多麻烦.温馨提醒:记得备份. 看到项目名称,总感觉有点low,所以尝试着要将其更改一下. 项目原结构如下: 更改后的项目结构如下: 下面开始更改操作 ...
- Yii2 yii2-imagine的使用
<?php /** * 图片常用处理 * * 需要 yii/yii2-imagine 的支持 * php composer.phar require --prefer-dist yiisoft/ ...
- [css]通过transform缩放邮件客户端h5页面
摘要 最近一直在折腾邮件通知的东东,大概逻辑就是如果有新邮件,向收件人的app推送一条服务号消息,并且在单击该消息的时候,需要展示邮件的详情. 技术 这里是使用Exchange EWS API来实现的 ...
- H5 使用
关闭页面 http://www.bcty365.com/content-146-3343-1.html 回退页面: plus.key.addEventListener('backbutton', fu ...
- 一款符合当前主流审美的Swing外观(Look and Feel)_测试版发布
[前言] 本文将展示的是一款J2SE平台Swing外观(Look and Feel)实现,目前给出的演示jar包仅供测试之用,主体工作已经完成,余下是兼容性测试和调整,附件中的演示jar包推荐运行于j ...