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. java--creater in windows

    电脑右键--高级--属性--更改环境变量 1.JAVA_HOME  C:\Program Files\Java\jdk1.7.0_04 2. Path                     %JAV ...

  2. sql 参数化查询

      在初次接触sql时,笔者使用的是通过字符串拼接的方法来进行sql查询,但这种方法有很多弊端 其中最为明显的便是导致了sql注入. 通过特殊字符的书写,可以使得原本正常的语句在sql数据库里可编译, ...

  3. gitlab文件夹的权限不要随便给777

    gitlab  权限给到777   不一定有用

  4. oracle一些常用的数据类型

    字符数据类型 char数据类型 当需要固定长度时,使用char数据类型,此数据类型长度可以使1-2000字节.若是不指定大小默认占1字节,如果长度有空余时会以空格进行填充,如果大于设定长度 数据库则会 ...

  5. JZOJ 3461. 【NOIP2013模拟联考5】小麦亩产一千八(kela)

    3461. [NOIP2013模拟联考5]小麦亩产一千八(kela) (Standard IO) Time Limits: 1000 ms  Memory Limits: 262144 KB  Det ...

  6. django之路由分发

    路由分发决定哪一个路由由哪一个视图函数来处理. 注意:django2.0里的re_path和django1.0里的url除了名字不一样,其他都一样. 简单配置 from django.urls imp ...

  7. 893E - Counting Arrays

    E. Counting Arrays time limit per test 3 seconds memory limit per test 256 megabytes input standard ...

  8. Codeforces Round #461 (Div. 2) B. Magic Forest

    B. Magic Forest time limit per test 1 second memory limit per test 256 megabytes Problem Description ...

  9. BFS:HDU-1072-Nightmare

    Nightmare Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total ...

  10. Java技术——Java多线程学习

    )适合多个相同程序代码的线程区处理同一资源的情况.比如下面这个买票的例子. //使用Thread实现 public static class MyThread extends Thread{ priv ...