Serializable序列化
对象的输入输出流
package file; import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable; /*
ObjectOutputStream的使用
1.如果对象要写到文件上,要实现Serializable 对象的输入流:ObjectOutputStream
对象的输出流:ObjectInputStream 2.对象的反序列化,不会调用对象的构造方法
3.serialVersionID 是用于记录class文件的版本信息的,serialVerionID这个数字是通过类的类名、成员、包名、工程名算出来的一个数字。
4。使用ObjectInputSteam反序列的时候,ObjectInputSteam会先读取文件中的serialVersionID,然后与本地的class文件的serialVersionID进行对比
如果2个ID不一致,那反序列化失败。
5.如果序列化与反序列化的时候可能会修改类的成员,那么就给类指定一个serialVersionID,然后在
序列化与反序列化的时候,jvm都不会再自己算这个serialVersionID了。
6.如果一个类维护了另外一个类,则另一个类也需要实现Serializable
*/
class User implements Serializable{ private static final long serialVersionUID = 1L; //指定了serialVersionUID,无论怎么修改成员都可以反序列化成功
String username;
String password;
transient int age; //transient透明的,不显示到硬盘上
User(String username, String password) {
this.username = username;
this.password = password;
} @Override
public String toString() {
// System.out.println("hah"); //加了这句,只要类的成员没有变化就成的
return "用户名:"+ username + "密码:" + password;
} } public class Demo10 {
public static void main(String[] args) throws IOException, Exception {
// writeObj();
readObj();
} //把文件的信息读取出来,就称为对象的反序列化
public static void readObj() throws IOException, ClassNotFoundException {
//找到目标文件
File file = new File("F:\\obj.txt");
//建立数据的输入通道
FileInputStream fileInputStream = new FileInputStream(file);
//建立对象的输入对象
ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
//读取对象信息
User user = (User)objectInputStream.readObject(); //创建对象肯定要依赖对象所属的class文件
System.out.println("对象的信息" + user);
objectInputStream.close(); } //把对象的信息写到硬盘上,也成为对象的序列化
public static void writeObj() throws IOException {
//把user信息持久化存储。
User user = new User("admin", "123");
//找到目标文件
File file= new File("F:\\obj.txt");
//建立数据输出对象
FileOutputStream fileOutputStream = new FileOutputStream(file);
//建立对象的输出流对象
ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream);
//把对象写出
objectOutputStream.writeObject(user);
//关闭资源
objectOutputStream.close();
}
}
Serializable序列化的更多相关文章
- Serializable序列化对象
Serializable序列化对象发送: Intent intent = new Intent(); intent.setClass(mContext, HomeDetailReportActivit ...
- java.io.Serializable 序列化问题
java.io.Serializable 序列化问题 Person.java package a.b.c; public class Person implements java.io.Seriali ...
- java.io.Serializable 序列化问题【原】
java.io.Serializable 序列化问题 Person.java package a.b.c; public class Person implements java.io.Seriali ...
- 【转】C#中Serializable序列化实例详解
这篇文章主要介绍了C#中Serializable序列化,以实例形式详细讲述了系列化的技术及各种序列化方法,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了C#中Serializable序列化.分 ...
- Java 之 Serializable 序列化和反序列化的概念,作用的通俗易懂的解释
遇到这个 Java Serializable 序列化这个接口,我们可能会有如下的问题a,什么叫序列化和反序列化b,作用.为啥要实现这个 Serializable 接口,也就是为啥要序列化c,seria ...
- IntelliJ IDEA生成 Serializable 序列化 UID 的快捷键
首先创建一个类如Movie,让该类实现Serializable序列化接口. 然后我们需要依次按照以下的方法找到 Settings 之后我们需要以下几个操作,并找到 Serializable class ...
- [转]Java 之 Serializable 序列化和反序列化的概念,作用的通俗易懂的解释
原文地址:https://blog.csdn.net/qq_27093465/article/details/78544505 遇到这个 Java Serializable 序列化这个接口,我们可能会 ...
- java.io.Serializable 序列化接口
什么是序列化.反序列化? Serialization(序列化)是一种将对象以一连串的字节描述的过程: 反序列化deserialization是一种将这些字节重建成一个对象的过程. 序列化通俗一点说就是 ...
- Hibernate的实体类为什么要实现Serializable序列化接口?
Hibernate的实体类中为什么要继承Serializable? hibernate有二级缓存,缓存会将对象写进硬盘,就必须序列化,以及兼容对象在网络中的传输 等等. java中常见的几个类(如 ...
- Serializable 序列化
序列化是指将对象实例的状态存储到存储媒体的过程.在此过程中,先将对象的公共字段和私有字段以及类的名称(包括类所在的程序集)转换为字节流,然后再把字节流写入数据流.在随后对对象进行反序列化时,将创建出与 ...
随机推荐
- 【转】浮点格式IEEE754详解
原文网址:http://www.cnblogs.com/zjujunge/archive/2012/09/13/2682613.html Intel聘请了最好的数值分析家来为8087FPU设计浮点数格 ...
- 【git】git常用命令简介
使用Git也好长时间了,但一直没系统的学习过,现在总结以下工作中用到的,记录以下,以后忘记了可以来看看. 因为操作系统是Windows,所以将简单介绍一下通过git bash命令行的使用: 本文将不介 ...
- 动态规划初级练习(二):BadNeighbors
Problem Statement The old song declares "Go ahead and hate your neighbor", and the re ...
- Java学习日记-2.5 关于0和无穷
1. 无穷 Java中将无穷定义为浮点数,分为正负无穷,分别为POSITIVE_INFINITY和NEGATIVE_INFINITY 2. null null在java中可以理解为一个特殊的引用类型, ...
- 用otl写的oracle取数工具,执行传入在查询语句,把结果输出到文件
项目中经常需要用到此类型的工具 #pragma warning (disable:4786) #include <iostream> #include <map> #inclu ...
- 在DataTable和DataView中查找指定记录
一.在DataTable中查找 1. 使用Select方法查找没有主键的表DataTable的Select方法返回一个DataRow数组,有四个重载的函数. DataRow[] drs = dt.Se ...
- 点击按钮弹出div,留用
<input type="button" onclick="document.getElementById('div').style.display=(docume ...
- iOS 跑马灯 之 TXScrollLabelView
前言 前段时间在开发一个广播的功能,网上也自己找了一些库,没有发现非常好用的,于是自己抽时间写了一个,在 Github 上发布一天收获六十多个 star,这里首先感谢大家在微博上的转发,使得 TXSc ...
- HDU 5266 pog loves szh III (线段树+在线LCA转RMQ)
题目地址:HDU 5266 这题用转RMQ求LCA的方法来做的很easy,仅仅须要找到l-r区间内的dfs序最大的和最小的就能够.那么用线段树或者RMQ维护一下区间最值就能够了.然后就是找dfs序最大 ...
- linux下用phpize给PHP动态添加扩展(转)
使用php的常见问题是:编译php时忘记添加某扩展,后来想添加扩展,但是因为安装php后又装了一些东西如PEAR等,不想删除目录重装,别说,php还真有这样的功能. 我没有在手册中看到. 如我想增加b ...