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. 【Django】URL中传递中文的问题

     开发环境:Ubuntu16.04+Django 1.11.9+Python2.7 在开发中,在做查找某些信息这个功能的时候,遇到的一个问题.需要在URL中传递查找的关键字,当关键字为中文的时候,并不 ...

  2. centos7上基于kubernetes的docker集群管理

    kubernetes和docker的作用这里就不作介绍了,直接进入主题. 本文的目的是搭建docker集群,并使用kubernetes管理它们. 文中的软件环境除了kubernetes和docker, ...

  3. 七、Linux 文件与目录管理

    Linux 文件与目录管理 我们知道Linux的目录结构为树状结构,最顶级的目录为根目录 /. 其他目录通过挂载可以将它们添加到树中,通过解除挂载可以移除它们. 在开始本教程前我们需要先知道什么是绝对 ...

  4. 三步搞定Vmware固定虚拟机的IP

    1.修改vmware的虚拟网络编辑器 按照图中红色方框的方法设置,子网IP可以设置成自己想要的,点击NAT设置,记住网关IP. 2.进入centos虚拟机系统 编辑 vim /etc/sysconfi ...

  5. HTML5/CSS3 第三章页面布局

    页面布局 1 页面组成 2 布局相关的标签 <div></div> 定义文档中的分区或节 <span></span> 这是一个行内元素,没有任何意义 & ...

  6. django_mysql_配置

    配置 1. 安装Pymysql pip install PyMySQL 然后在项目同名_init__添加 from pymysql import install_as_MySQLdb install_ ...

  7. 初学js之qq聊天实例

    实现的功能为上图所示,但是每新发送的消息必须显示在最上面. 我实现了两版,样式有是一样的.我们直接看代码. 版本一: <!DOCTYPE html> <html lang=" ...

  8. Building a Space Station POJ - 2031

    Building a Space Station POJ - 2031 You are a member of the space station engineering team, and are ...

  9. Java8_Lambda表达式

            从2014年java8发布到现在已经有几个年头了,现在java11都发布了.公司最近把服务器环境重新搭建了一遍,jdk版本也从7换成了8,终于可以在代码里面写Lambda表达式了.作为 ...

  10. springboot学习资料汇总

    收集Spring Boot相关的学习资料,Spring Cloud点这里 推荐博客 纯洁的微笑 程序猿DD liaokailin的专栏 Spring Boot 揭秘与实战 系列 catoop的专栏 简 ...