package Serialize;

/**
* Created by hu on 2015/11/7.
*/
//实现序列化必须实现的接口,这就是一个空接口,起到标识的作用
import java.io.Serializable; /**
* 用来进行序列化和反序列化的类
* */
public class person implements Serializable {
private int age;
private String name;
private String sex;
public person(int age, String name, String sex) {
this.age = age;
this.name = name;
this.sex = sex;
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getSex() {
return sex;
} public void setSex(String sex) {
this.sex = sex;
} @Override
public String toString() {
return "person: name="+name+";sex="+sex+";age="+age;
}
}
**************************************************************
package Serialize; import java.io.*; /**
* Created by hu on 2015/11/7.
*/
//序列化和反序列化
public class demo1 {
public static void main(String[] args)throws Exception{
for(int i=0;i<100;i++){
person pp=new person(i,"hujingwei"+i,"male");
SerializePerson(pp);
}
//反序列化只会序列文件中第一个对象
person p=DeserializePerson();
System.out.println(p);
}
//序列化方法,将对象写到磁盘上的一个文件上
public static void SerializePerson(person p)throws IOException{
/*
* 如果FileOutputStream的构造函数中没有第二个参数“true”,那么新添加一个对象的时候,会将上一次序列化到文件
* 中的对象覆盖掉,这种情况下,文件中永远只有一个序列化的对象;将第二个参数设置为“true”的时候,会将每次添加
* 的对象放在文件的末尾。
* */
//ObjectOutputStream对象输出流,将person对象存储到person.txt中,完成对person对象序列化操作
ObjectOutputStream oo=new ObjectOutputStream(new FileOutputStream(new File("D:/person.txt"),true));
//将序列化的对象写入到输入流中去
oo.writeObject(p);
System.out.println("Serialize person successfully!");
oo.close();
}
//反序列化,将一个对象从磁盘文件中读出来
public static person DeserializePerson()throws Exception{
//ObjectInputStream对象输入流,将person对象从文件中读出
ObjectInputStream oi=new ObjectInputStream(new FileInputStream(new File("D:/person.txt")));
person p=(person)oi.readObject();
System.out.println("Deserialize person successfully!");
return p;
}
}
********************************************************
package Serialize; /**
* Created by hu on 2015/11/7.
*/ import java.io.*;
import java.util.ArrayList;
import java.util.List; /**
* 序列化和反序列化多个对象
* */
public class demo2 {
public static void main(String[] args)throws Exception{
Serialize();
List list=Deserialize();
for (int i=0;i<list.size();i++){
person p=(person)list.get(i);
System.out.println(p);
}
}
//序列化方法
public static void Serialize() throws Exception{
//将多个对象保存在一个list中,然后将list当作一个对象存入到文件中(list已经实现了Serializable接口)
List<person> list= new ArrayList<person>();
for (int i=0;i<100;i++){
person p=new person(i,"test"+i,"male");
list.add(p);
}
ObjectOutputStream oo=new ObjectOutputStream(new FileOutputStream(new File("D:/person.txt"),true));
oo.writeObject(list);
oo.close();
}
//反序列化方法
public static List Deserialize() throws Exception{
ObjectInputStream oi=new ObjectInputStream(new FileInputStream(new File("D:/person.txt")));
List list=(List)oi.readObject();
return list;
}
}

java中的序列化与反序列化,还包括将多个对象序列化到一个文件中的更多相关文章

  1. java中的文件读取和文件写出:如何从一个文件中获取内容以及如何向一个文件中写入内容

    import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.Fi ...

  2. Java基础知识强化之IO流笔记52:IO流练习之 把一个文件中的字符串排序后再写入另一个文件案例

    1. 把一个文件中的字符串排序后再写入另一个文件 已知s.txt文件中有这样的一个字符串:"hcexfgijkamdnoqrzstuvwybpl" 请编写程序读取数据内容,把数据排 ...

  3. Java IO把一个文件中的内容以字符串的形式读出来

    代码记录(备查): /** * 把一个文件中的内容以字符串的形式读出来 * * @author zhipengs * */ public class FileToString { public sta ...

  4. 通过java 来实现对多个文件的内容合并到一个文件中

    现在有多个txt文本文件,需要把这么多个文件的内容都放到一个文件中去 以下是实现代码 package com.SBgong.test; import java.io.*; public class F ...

  5. shell脚本就是由Shell命令组成的执行文件,将一些命令整合到一个文件中,进行处理业务逻辑,脚本不用编译即可运行。它通过解释器解释运行,所以速度相对来说比较慢。

    shell脚本?在说什么是shell脚本之前,先说说什么是shell. shell是外壳的意思,就是操作系统的外壳.我们可以通过shell命令来操作和控制操作系统,比如Linux中的Shell命令就包 ...

  6. Excel表格中依据某一列的值,将这列中一样的数据放在一个文件中。

    一需求:按照标题C的内容,一样的数据整理到一个文件中. 二.操作: 1.atl+F11弹出vb窗口 2.点击       插入===>模块   ,复制以下代码,注意这是一个表头为三行的函数(保存 ...

  7. 将一个文件中的内容,在另一个文件中生成. for line in f1, \n f2.write(line)

    将一个文件中的内容,在另一个文件中生成. 核心语句: for line in f1: f1中的所有一行 f2.write(line)                                  ...

  8. 统计一个文件中出现字符'a'的次数

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #统计一个文件中出现字符'a'的次数 #http://www.cnblogs.com/hongten/p/ho ...

  9. 在一个另一个文件中 #include一个**dlg.h文件,会发生dlg的资源ID未定义的错误 :

    1    在一个另一个文件中 #include一个**dlg.h文件,会发生dlg的资源ID未定义的错误 : dlg1.h(23) : error C2065: 'IDD_DIALOG1' : und ...

随机推荐

  1. restful api 规范

  2. for循环+canvas实现黑客帝国矩形阵

    <!DOCTYPE html><html><head> <meta http-equiv="Content-Type" content=& ...

  3. dijkstra与他的优化!!!

    目录 SPFA已死,有事烧纸 Dijkstra 配对堆 引言 讲解 合并 修改 弹出堆顶pop 代码 结合! 1 2 @ SPFA已死,有事烧纸 其实我本人也是一个SPFA的忠诚用户,至少我的最少费用 ...

  4. 文件的特殊权限(SUID,SGID,SBIT)

    文件的一般权限:r w x  对应 421  文件的特殊权限:SUID SGID SBIT对应 421  文件的隐藏权限:chattr设置隐藏权限,lsattr查看文件的隐藏权限. 文件访问控制列表: ...

  5. easyui 判断密码是否输入一致

    1.首先要扩展validatebox,添加验证两次密码功能 $.extend($.fn.validatebox.defaults.rules, { eqPassword:{ validator:fun ...

  6. SSRS 报表管理器 http://localhost/Reports HTTP500 内部错误处理过程

    原文地址:http://www.cnblogs.com/zzry/p/5716056.html 安装了很多机器的sqlserverBI 组件 初始安装配置下 浏览报表管理器 http://localh ...

  7. Jquery 实现层的拖动,支持回调函数

    最近在写一个CMS内容管理系统,前台基本是用ajax异步请求服务器,通过ashx处理,返回json格式处理.由于需要更加人性化的界面,所以采用到了拖动层的操作. 以下是拖动层的主要核心方法,本来想写成 ...

  8. 如何部署安装软件:vs2010 'VS' Inno Setup

    一直以来就是调试程序,生成的文件在debug或者release下,当没有其他资源文件时,这些程序也不用打包,直接就能够运行,但是程序中总会有一些额外的资源文件,视频啊,图片啊.这些需要打包在一个安装文 ...

  9. Kafka SSL 配置

    #!/bin/bash # 生成服务器keystore(密钥和证书)keytool -keystore server.keystore.jks -alias machine03.zheng.com - ...

  10. c#每循环100次提交一次数据,最后一次不足100次提交一次

    StringBuilder sb=new StringBuilder(); string strId=dataGridView1.Rows[dataGridView1.CurrentRow.Index ...