Java类中对象的序列化工作是通过ObjectOutputStream和ObjectInputStream来完成的。

写入:

         File aFile=new File("e:\\c.txt");
Stu a=new Stu(1, "aa", "1");
FileOutputStream fileOutputStream=null;
try {
fileOutputStream = new FileOutputStream(aFile);
ObjectOutputStream objectOutputStream=new ObjectOutputStream(fileOutputStream);
objectOutputStream.writeObject(a);
objectOutputStream.flush();
objectOutputStream.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
if(fileOutputStream!=null)
{
try {
fileOutputStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

读取:

          FileInputStream fileInputStream=new FileInputStream(aFile);
ObjectInputStream objectInputStream=new ObjectInputStream(fileInputStream);
Stu s=(Stu)objectInputStream.readObject();
System.out.println(s);

注意:

对于任何需要被序列化的对象,都必须要实现接口Serializable,它只是一个标识接口,本身没有任何成员,只是用来标识说明当前的实现类的对象可以被序列化。

如果在类中的一些属性,希望在对象序列化过程中不被序列化,使用关键字transient标注修饰就可以。当对象被序列化时,标注为transient的成员属性将会自动跳过。如果一个可序列化的对象包含某个不可序列化对象的引用,那么序列化操作会失败,会抛出NotSerializableException异常,那么将这个引用标记transient,就可以序列化了。
当一个对象被序列化时,只保存对象的非静态成员变量,不能保存任何的成员方法,静态的成员变量。 
如果一个对象的成员变量是一个对象,那么这个对象的数据成员也会被保存还原,而且会是递归的方式。

Java将对象写入文件读出——序列化与反序列化的更多相关文章

  1. java中将list、map对象写入文件

    链接地址:http://blog.sina.com.cn/s/blog_4a4f9fb50101p6jv.html     推荐:凤爪女瓜子男怪象该谁反思伦敦房价为什么持续暴涨 × wvqusrtg个 ...

  2. Java IO详解(六)------序列化与反序列化(对象流)

    File 类的介绍:http://www.cnblogs.com/ysocean/p/6851878.html Java IO 流的分类介绍:http://www.cnblogs.com/ysocea ...

  3. .NET Core 对象到字节数组的序列化和反序列化

    .NET Core中利用MemoryStream和BinaryFormatter可以实现对象到字节数组的序列化和反序列化: 定义ObjectSerializer类,实现对象到字节数组的序列化和反序列化 ...

  4. Java中对文件的序列化和反序列化

    public class ObjectSaver { public static void main(String[] args) throws Exception { /*其中的 D:\\objec ...

  5. java 打印流 递归复制子文件子文件夹 不同编码文件复制到同一文件中 序列化流反序列化流

    package com.swift.jinjie; import java.io.BufferedInputStream; import java.io.File; import java.io.Fi ...

  6. java 复制对象 (克隆接口 与 序列化)

    关于java对象复制我们在编码过程经常会碰到将一个对象传递给另一个对象,java中对于基本型变量采用的是值传递,而对于对象比如bean传递时采用的是应用传递也就是地址传递,而很多时候对于对象传递我们也 ...

  7. Java使用FileOutputStream写入文件

    From: http://beginnersbook.com/2014/01/how-to-write-to-a-file-in-java-using-fileoutputstream/ /* 使用F ...

  8. Java将字符串写入文件与将文件内容读取到字符串

    原文:http://blog.csdn.net/liuweiyuxiang/article/details/69487326 将字符串写入文件 方法一 public void WriteStringT ...

  9. python将对象写入文件,以及从文件中读取对象

    原文地址: http://www.voidcn.com/article/p-fqtqpwxp-wo.html 写入文件代码: >>> import sys, shelve >& ...

随机推荐

  1. Markdown_01_基础语法

    目录 概览 一.区块元素{#BlockElement} 1.段落和换行 2.标题 2.区块引用 2.1 在每行的最前面加上 > 2.2 只在整个段落的第一行最前面加上> 2.3 区块引用可 ...

  2. 正则表达式 preg_match 匹配中文

    preg_match 匹配中文出错 2010年01月06日 星期三 14:55 错误提示: Warning: preg_match() [function.preg-match]: Compilati ...

  3. 《Effective C++》第8章 定制new和delete-读书笔记

    章节回顾: <Effective C++>第1章 让自己习惯C++-读书笔记 <Effective C++>第2章 构造/析构/赋值运算(1)-读书笔记 <Effecti ...

  4. 第2课:jmeter总结、Charles抓包

    1.  tps(throughput):每秒钟处理的事务数(请求数),定义与qps类似(qps:每秒完成的请求个数.)  响应时间(average):每个请求的平均响应时间 2. jmeter实现下载 ...

  5. Linux:数据流重定向

    1)垃圾桶黑洞 /dev/null command > /dev/null 2)stdout与stderr写入同一个文件 command > filename >& comm ...

  6. Ubuntu下执行mysql的sql文件

    Ubuntu下执行mysql的.sql文件   方法一: 1.执行此命令,会提示输入mysql的root账户的密码,验证成功后,会在dbname这个数据库中执行filename.sql这个脚本,其中f ...

  7. CMD命令提示符下选中文字即可以复制和SecureCRT一样

    用过 SecureCRT 的都会觉得复制粘贴很方便.只要选中相应文字,会自动复制.然后点鼠标右键就可以粘贴,非常方便. 但是在windows系统下的CMD里面,每次都要点鼠标右键→标记,再选中相应文字 ...

  8. Unity3D 屏幕空间雪场景Shader渲染

    笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,已出版书籍:<手把手教你架构3D游戏引擎>电子工业出版社和<Unity3D实战核心技术详解 ...

  9. Faster R-CNN改进篇(一): ION ● HyperNet ● MS CNN

    一. 源起于Faster 深度学习于目标检测的里程碑成果,来自于这篇论文: Ren, Shaoqing, et al. "Faster R-CNN: Towards real-time ob ...

  10. BGP选路原则

    bgp选路原则 1 最高有weight优先,默认为0(思科特有,选大的) 2 本地优先级高的优先(只可以在IBGP邻居之间传递) 3 起源本路由器上的路由(network.aggregate-addr ...