java中的序列化与反序列化,还包括将多个对象序列化到一个文件中
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中的序列化与反序列化,还包括将多个对象序列化到一个文件中的更多相关文章
- java中的文件读取和文件写出:如何从一个文件中获取内容以及如何向一个文件中写入内容
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.Fi ...
- Java基础知识强化之IO流笔记52:IO流练习之 把一个文件中的字符串排序后再写入另一个文件案例
1. 把一个文件中的字符串排序后再写入另一个文件 已知s.txt文件中有这样的一个字符串:"hcexfgijkamdnoqrzstuvwybpl" 请编写程序读取数据内容,把数据排 ...
- Java IO把一个文件中的内容以字符串的形式读出来
代码记录(备查): /** * 把一个文件中的内容以字符串的形式读出来 * * @author zhipengs * */ public class FileToString { public sta ...
- 通过java 来实现对多个文件的内容合并到一个文件中
现在有多个txt文本文件,需要把这么多个文件的内容都放到一个文件中去 以下是实现代码 package com.SBgong.test; import java.io.*; public class F ...
- shell脚本就是由Shell命令组成的执行文件,将一些命令整合到一个文件中,进行处理业务逻辑,脚本不用编译即可运行。它通过解释器解释运行,所以速度相对来说比较慢。
shell脚本?在说什么是shell脚本之前,先说说什么是shell. shell是外壳的意思,就是操作系统的外壳.我们可以通过shell命令来操作和控制操作系统,比如Linux中的Shell命令就包 ...
- Excel表格中依据某一列的值,将这列中一样的数据放在一个文件中。
一需求:按照标题C的内容,一样的数据整理到一个文件中. 二.操作: 1.atl+F11弹出vb窗口 2.点击 插入===>模块 ,复制以下代码,注意这是一个表头为三行的函数(保存 ...
- 将一个文件中的内容,在另一个文件中生成. for line in f1, \n f2.write(line)
将一个文件中的内容,在另一个文件中生成. 核心语句: for line in f1: f1中的所有一行 f2.write(line) ...
- 统计一个文件中出现字符'a'的次数
# -*- coding: utf-8 -*- #python 27 #xiaodeng #统计一个文件中出现字符'a'的次数 #http://www.cnblogs.com/hongten/p/ho ...
- 在一个另一个文件中 #include一个**dlg.h文件,会发生dlg的资源ID未定义的错误 :
1 在一个另一个文件中 #include一个**dlg.h文件,会发生dlg的资源ID未定义的错误 : dlg1.h(23) : error C2065: 'IDD_DIALOG1' : und ...
随机推荐
- django+xadmin在线教育平台(二)
老话总是没错的,工欲善其事,必先利其器 教你安装pycharm,mysql,navicat,python相关环境. windows下搭建开发环境 2-1 pycharm,mysql,Navicat安装 ...
- 常见react面试题汇总
已经开源 地址:https://github.com/nanhupatar...关注我们团队: React 中 keys 的作用是什么? Keys 是 React 用于追踪哪些列表中元素被修改.被添加 ...
- 初识redis-cluster
安装redis [root@localhost ~]# cd /datas/soft/ [root@localhost soft]# ll redis-.tar.gz // 已经下载的最新版 -rwx ...
- win10桌面显示我的电脑
1.桌面单击右键菜单栏,选中单击个性化 2.选择主题->桌面图标设置 3.勾选需要显示或不显示的图标
- hihocoder#1098 : 最小生成树二·Kruscal算法
#1098 : 最小生成树二·Kruscal算法 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 随着小Hi拥有城市数目的增加,在之间所使用的Prim算法已经无法继续使用 ...
- POJ 3414 BFS 输出过程
Pots Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 17456 Accepted: 7407 Special J ...
- hadoop 启动or运行mr错误
hadoop 错误:Incorrect configuration: namenode address dfs.namenode.servicerpc-address or dfs.namenode. ...
- Android开发——JVM、Dalvik以及ART的区别
)预编译也可以明显改善电池续航,因为应用程序每次运行时不用重复编译了,从而减少了 CPU 的使用频率,降低了能耗.
- c++实验4
1. 车辆基本信息管理 #include <iostream> using namespace std; #include <string> #include "c ...
- 2 - JVM随笔分类(JVM堆的内存回收)
JVM常用的回收算法是: 标记/清除算法 标记/复制算法 标记/整理算法 其中上诉三种算法都先具备,标记阶段,通过标记阶段,得到当前存活的对象,然后再将非标记的对象进行清除,而对象内存中对象的标记过程 ...