java序列化流_Java学习笔记32(IO:序列化流)

对象中的数据 ,以流的形式,写入到文件中保存,过程称为写出对象,对象的序列化

ObjectOutputStream将对象写到序列中,实现序列化

在文件中,以流 的形式,将对象读取出来,过程称为读取对象,对象的反序列化

ObjectInputStream将文件对象读取出来,实现反序列化

示例:

package com.zs.Demo;

import java.io.Serializable;

public class Person implements Serializable {

private String name;

//age不会被序列化

private transient int age;

public Person(String name, int age) {

this.name = name;

this.age = age;

}

public Person() {

super();

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

@Override

public String toString() {

return "Person{" +

"name='" + name + '\'' +

", age=" + age +

'}';

}

}

测试类:

package com.zs.Demo;

import java.io.*;

public class Demo {

public static void main(String[] args) {

try {

fun();

fun2();

} catch (Exception e) {

e.printStackTrace();

}

}

//反序列化流

private static void fun2() throws Exception {

//创建文件输入流对象

FileInputStream f=new FileInputStream("h:\\a.txt");

//创建反序列化流对象

ObjectInputStream os=new ObjectInputStream(f);

//读文件中的对象

Object obj = os.readObject();

System.out.println(obj);

//关闭流

os.close();

}

//对象的序列化,将对象存到文件中

private static void fun() throws IOException {

//创建文件输出流对象

FileOutputStream f=new FileOutputStream("h:\\a.txt");

//创建序列化流对象

ObjectOutputStream os=new ObjectOutputStream(f);

//创建对象

Person p=new Person("张三",18);

//将对象写到文件中

os.writeObject(p);

//关闭序列化流

os.close();

}

}

注意事项:

1.对象若要序列化,对象类必须实现Serializable接口(类通过实现 java.io.Serializable 接口以启用其序列化功能。未实现此接口的类将无法使其任何状态序列化或反序列化。)

这个接口没有方法,称为标记性接口,起到标记作用,只有别标记的类才可以序列化;

2.静态不可以序列化:给age加上static修饰符,然后序列化,发现输出age=0

原因:对象序列化,而静态不属于对象,属于类,对象不包含静态,所以静态不能序列化,为零原因是静态变量默认为0;

2.transient关键字,阻止成员变量序列化,如果不想让变量序列化,又不能使用静态修饰符,就用transient关键字

Java学习笔记42(序列化流)

对象中的数据,以流的形式,写入到文件中保存 过程称为写出对象,对象的序列化 ObjectOutputStream将对象写到文件中,实现序列化 在文件中,以流的形式,将对象读取出来, 读取对象,对象的反 ...

java学习笔记之IO编程—内存流、管道流、随机流

1.内存操作流 之前学习的IO操作输入和输出都是从文件中来的,当然,也可以将输入和输出的位置设置在内存上,这就需要用到内存操作流,java提供两类内存操作流 字节内存操作流:ByteArrayOutp ...

【原】Java学习笔记033 - IO

package cn.temptation; public class Sample01 { public static void main(String[] args) { // 需求:继承关系中爷 ...

Java学习笔记之——IO

一. IO IO读写 流分类: 按照方向:输入流(读),输出流(写) 按照数据单位:字节流(传输时以字节为单位),字符流(传输时以字符为单位) 按照功能:节点流,过滤流 四个抽象类: InputStr ...

java学习笔记之IO编程—打印流和BufferedReader

1.打印流(PrintWriter) 想要通过程序实现内容输出,其核心一定是要依靠OutputStream类,但是OutputStream类有一个最大缺点,就是这个类中的输出操作功能有限,所有的数据一 ...

Java学习笔记43(打印流、IO流工具类简单介绍)

打印流: 有两个类:PrintStream,PrintWriter类,两个类的方法一致,区别在于构造器 PrintStream:构造方法:接收File类型,接收字符串文件名,接收字节输出流(Outpu ...

Java学习笔记-10.io流

1.输入流,只能从中读取数据,而不能向其写出数据.输出流,只能想起写入字节数据,而不能从中读取. 2.InputStream的类型有: ByteArrayInputStream 包含一个内存缓冲区,字 ...

java学习笔记之IO编程—字节流和字符流

1. 流的基本概念 在java.io包里面File类是唯一一个与文件本身有关的程序处理类,但是File只能够操作文件本身而不能操作文件的内容,或者说在实际的开发之中IO操作的核心意义在于:输入与输出操 ...

java学习笔记之IO编程—对象序列化

对象序列化就是将内存中保存的对象以二进制数据流的形式进行处理,可以实现对象的保存或网络传输. 并不是所有的对象都可以被序列化,如果要序列化的对象,那么对象所在的类一定要实现java.io.Serial ...

随机推荐

git/ssh捋不清的几个问题

主要是 windows 用户会遇到很多纠结的问题,linux/unix 用户属于这方面的高端用户,应该有能力处理此类问题,而且网络上也有很多解决方案,本文的授众是 windows 用户.由于今天配置了 ...

Mac Pro 使用 ll、la、l等ls的别名命令

在 Linux 下习惯使用 ll.la.l 等ls别名的童鞋到 mac os 可就郁闷了~~ 其实只要在用户目录下建立一个脚本“.bash_profile”, vim .bash_profile 并输 ...

window.open参数设置及如何全屏显示(转)

先来个列子: window.open ('page.html','newwindow','height=100,width=400,top=0,left=0,toolbar=no,menubar=no ...

matlab如何读取未知行数,带头文件和字段名的txt文件

文件格式是这样的 20120108 50024 X235RZB30801 01 15 2361 2362 2363 2364 2365 2366 2367 2368 2369 236A 236B 23 ...

js控件位置

function ShowSettingDiv() { var div = document.getElementById('ShowDiv'); //将要弹出的层 div.style.display ...

static作用——The static effect

1)在函数体内,一个被声明为静态的变量在这一函数被调用过程中维持其值不变(该变量存放在静态变量区). 2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它 ...

使用react-native做一个简单的应用-03欢迎界面

Android和iOS的欢迎界面是不一样的,在iOS中有一个默认的欢迎界面,而Android则需要自己写.因此我就分开说一下这两个平台的欢迎界面的搭建.下面先看一下实现效果: Android: iOS ...

oracle检查点队列与增量检查点【转载】

oracle检查点队列与增量检查点 今天是2013-09-04,这几天一直心里安顿不下来,今天还好了,可以自己安静的学习一下oracle,在此记录一下学习笔记.这篇文章我不知道在那转载的,一直都留在我 ...

ML笔记:Where does the error come from?

error来自哪? 来自于偏差Bias和方差Variance. 就如打靶时瞄准一个点f平均,打出的点f星分布在该点周围. 该点与实际靶心f帽的距离就是偏差Bias, 打出的点与该点的分布距离就是方差V ...

请手动释放你的资源(Please release resources manually)

作者: Laruence(   ) 本文地址: http://www.laruence.com/2012/07/25/2662.html 转载请注明出处 我从来不认为这个问题是个问题, 直到昨天. 昨 ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值