Java 序列化 和 反序列--by Vincent
即把一个对象可以被表示为一个字节序列。然后可以写入文件保存。
- ObjectInputStream(对象输入流---反序列化)
- ObjectOutputStream(对象输出流--序列化)
- 一个对象想要序列化。那么这个类必须继承Serializable接口。
- javaAPI里的标准类是不是可以被序列化那么有查看原文档。看源文档有没有实现这个接口>
- 这个类的所有属性必须是可序列化的,如果有一个属性不是可序列化的,则该属性必须注明是短暂的,必须注明。
总之,java 的transient关键字为我们提供了便利,你只需要实现Serilizable接口,将不需要序列化的属性前添加关键字transient,序列化对象的时候,这个属性就不会序列化到指定的目的地中。
实现下。
【一个可序列化的类】
/**
* @author 谢杰
* 测试序列化。该类实现了serializable接口。
*/
public class Student implements java.io.Serializable{
public String name;
public String address;
public int account;
public <span style="background-color: rgb(102, 255, 153);">transient </span>int password; //transient password设置为不可序列化 public void mailCheck()
{
System.out.println("Mailing a check to " + name
+ " " + address);
}
}
import java.io.*; public class StudentSerialize_Out {
public static void main(String [] args)
{
Student e = new Student();
e.name = "Vincent";
e.address = "harbin/china";
e.password = 11122333;
e.account = 101;
try
{
FileOutputStream fileOut =
new FileOutputStream("<span style="background-color: rgb(102, 255, 153);">F://Student.ser</span>");
ObjectOutputStream out = new ObjectOutputStream(fileOut);
out.writeObject(e);
out.close();
fileOut.close();
System.out.printf("Serialized data is saved in F://Student.ser");
}catch(IOException i)
{
i.printStackTrace();
}
}}
【成功输出在F盘。。。】
【我们用记事本打开 .ser查看里面的字符。】
可以看到没有
password
【反序列化】
import java.io.*; public class StudentSerialize_Input {
public static void main(String [] args)
{
Student e = null;
try
{
FileInputStream fileIn = new FileInputStream("F://Student.ser");
ObjectInputStream in = new ObjectInputStream(fileIn);
e = (Student) in.readObject(); //注意这里要把返回来的object类型转换
in.close();
fileIn.close();
}catch(IOException i)
{
i.printStackTrace();
return;
}catch(ClassNotFoundException c)
{
System.out.println("Student class not found");
c.printStackTrace();
return;
}
System.out.println("Deserialized Student...");
System.out.println("Name: " + e.name);
System.out.println("Address: " + e.address);
System.out.println("password: " + e.password);
System.out.println("account: " + e.account);
}
}
Java 序列化 和 反序列--by Vincent的更多相关文章
- Java常见序列化与反序列方法总结
很多商业项目用到数据库.内存映射文件和普通文件来完成项目中的序列化处理的需求,但是这些方法很少会依靠于Java序列化.本文也不是用来解释序列化的,而是一起来看看面试中有关序列化的问题,这些问题你很有可 ...
- Java实现 LeetCode 449 序列化和反序列化二叉搜索树
449. 序列化和反序列化二叉搜索树 序列化是将数据结构或对象转换为一系列位的过程,以便它可以存储在文件或内存缓冲区中,或通过网络连接链路传输,以便稍后在同一个或另一个计算机环境中重建. 设计一个算法 ...
- Java 序列化与反序列化
1.什么是序列化?为什么要序列化? Java 序列化就是指将对象转换为字节序列的过程,而反序列化则是只将字节序列转换成目标对象的过程. 我们都知道,在进行浏览器访问的时候,我们看到的文本.图片.音频. ...
- Java 序列化Serializable详解
Java 序列化Serializable详解(附详细例子) Java 序列化Serializable详解(附详细例子) 1.什么是序列化和反序列化Serialization(序列化)是一种将对象以一连 ...
- Java序列化的几种方式以及序列化的作用
Java序列化的几种方式以及序列化的作用 本文着重讲解一下Java序列化的相关内容. 如果对Java序列化感兴趣的同学可以研究一下. 一.Java序列化的作用 有的时候我们想要把一个Java对象 ...
- Java序列化机制
java的序列化机制支持将对象序列化为本地文件或者通过网络传输至别处, 而反序列化则可以读取流中的数据, 并将其转换为java对象. 被序列化的类需要实现Serializable接口, 使用Objec ...
- Java学习笔记(十七)——java序列化
[前面的话] 做项目总是要用到很多东西,遇到一个新的知识,并不是这个知识出来的时间短,而是对于自己来说是新的,所以就需要自己去学习,希望今后可以提高学习的效率. 这篇文章是关于Java 序列化的,选择 ...
- java序列化---转
Java 序列化Serializable详解(附详细例子) 1.什么是序列化和反序列化Serialization(序列化)是一种将对象以一连串的字节描述的过程:反序列化deserialization是 ...
- [java]序列化框架性能对比(kryo、hessian、java、protostuff)
序列化框架性能对比(kryo.hessian.java.protostuff) 简介: 优点 缺点 Kryo 速度快,序列化后体积小 跨语言支持较复杂 Hessian 默认支持跨语言 较慢 Pro ...
随机推荐
- C语言数组和函数实例练习(一)
C语言的数组和函数部分的知识,在语法上和Java语法是有所相似的,这里只通过实例总结一些自己感觉需要理解的部分知识. 1.数组 数组中的元素具有相同的数据类型:数组一旦创建,不能被改变:数组中元素在内 ...
- ubuntu查看文件大小
使用linux命令df 和du,df 但是df只能查看一级文件夹大小.使用比例.档案系统及其挂入点,但对文件却无能为力.du可以查看文件及文件夹的大小.所以基本上是两者配合使用. 一 df h参数, ...
- [Algorithm]扔杯问题
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- 4、Collection接口功能测试(所有的All方法)
package cn.itcast_01; import java.util.ArrayList; import java.util.Collection; /* * 所有带All的方法:(听完就忘) ...
- iterator和iterable的区别
相关博客: http://blog.csdn.net/lipengcn/article/details/51700153 Java中Iterable和Iterator的辨析 http ...
- ModelState对象
1.在控制器中判断Model验证结果
- 找不到dll原因
1.没有生成成功: A.代码有错误 B.引用dll有问题(dll生成失败|dll版本不对) C.源文件损坏 2.dll生成路径不对 3.对dll的引用丢失
- 基于ACE的TAO开发---一个简单的入门实例-----VS2008(二)
上一节已经说了如何编译idl文件.现在就用编好的文件来写一个最小的corba小程序的.程序分为服务器程序和客户端程序. 说明下,代码是<基于C++CORBA高级编程>一书中的例子. 1.首 ...
- 时空上下文视觉跟踪(STC)
论文的关键点是对时空上下文(Spatio-Temporal Context)信息的利用.主要思想是通过贝叶斯框架对要跟踪的目标和它的局部上下文区域的时空关系进行建模,得到目标和其周围区域低级特征的统计 ...
- (转) RabbitMQ学习之发布/订阅(java)
http://blog.csdn.net/zhu_tianwei/article/details/40887733 参考:http://blog.csdn.NET/lmj623565791/artic ...