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 ...
随机推荐
- CSS+JS实现流星雨动画
引言 平常会做一些有意思的小案例练手,通常都会发到codepen上,但是codepen不能写分析. 所以就在博客上开个案例分享系列,对demo做个剖析.目的以分享为主,然后也希望各路大神 ...
- Python循环的一些基本练习
#1:# name = input('请输入你的身份')# if name == 'egon':# print('--> 超级管理员')# elif name == 'tom':# print( ...
- 绘制字符串:imagestring()
<?php //1. 绘制图像资源(创建一个画布) $image = imagecreatetruecolor(500, 300); //2. 先分配一个绿色 $green = imagecol ...
- PHP 批量操作 Excel
自己封装了一个批量操作excel文件的方法,通过xls文件地址集合遍历,第三个参数传入一个匿名函数用于每个需求的不同进行的操作,实例中我想要得到列表中含有折字的行,封装成sql语句返回. xls文件超 ...
- 关于Linux系统下zookeeper集群的搭建
1.集群概述 1.1什么是集群 1.1.1集群概念 集群是一种计算机系统, 它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作.在某种意义上,他们可以被看作是一台计算机.集群系 ...
- 模块之 logging模块 time 模块 random模块 sys模块 pickle模块
1.如果执行文件不在项目根目录下,需要添加项目根目录到sys.path中2.调用业务逻辑 2.logging模块 程序日志是 什么时间发生了什么事情,以及当时的情况 不是logging的话 记录日志的 ...
- 遗传算法 | C++版GA_TSP
嗯哼,时隔半年,再次有时间整理关于组合优化问题——旅行商问题(Traveling Salesman Problem, TSP),这次采用的是经典遗传算法(Genetic Algorithm, GA)进 ...
- 笔记-python-反射
笔记-python-反射 1. 反射 在很多地方看到自省和反射,很晕菜,整理了一下相关文档,加深了理解. 自省和反射其实说的是一件事,核心操作是根据输入去对象(模块)中调用(查找/获取/删除/添加)成 ...
- linux学习(三) -- lnmp环境切换php版本,并安装相应redis扩展
原创文章,转载请注明出处 我想配置的环境是ubuntu+nginx+mysql+php+redis,其中php装两个版本,php7和php56 ubuntu+nginx+mysql+php的环境配 ...
- VC下如何调用控制台命令以及其他可执行文件
开始的时候想写一个基于MFC的Wifi开关控制程序,可是不知道VC中如何调用控制台命令,经过网上的学习,发现其实挺挺简单也挺好用.于是制作了一个简单的基于MFC个人助理小软件,可以点击按钮实现Wifi ...