序列化存储和反序列化得到数据
2015-04-22 17:24
453 查看
一 序列化和反序列化
序列化就是把一个类的对象封装成一个文件,用于传输和存储。反序列化就是把该文件还原到之前的对象。
二 实例研究:本实例针对序列化存储一个集合数据和反序列化得到集合数据。在代码中注意相关代码的注释和解开注释,便于测试。
首先要将序列化的对象继承Serializable
public class SerializableMap implements Serializable {
private static final long serialVersionUID = 1L;
private ArrayList<HashMap<Integer, Str
4000
ing>> downLoadDataList =new ArrayList<HashMap<Integer,String>>();
public ArrayList<HashMap<Integer, String>> getDownLoadDataList() {
return downLoadDataList;
}
public void setDownLoadDataList(
ArrayList<HashMap<Integer, String>> downLoadDataList) {
this.downLoadDataList = downLoadDataList;
}
}
public class Test {
/**
* @param args
* @throws FileNotFoundException
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//测试序列化集合存储和反序列化读取数据=================
//向集合中写入数据
ArrayList<HashMap<Integer,String>> datalist = new ArrayList<HashMap<Integer,String>>();
for(int i=0;i<5;i++)
{
HashMap<Integer,String> itemdata = new HashMap<Integer,String>();
itemdata.put(0, String.valueOf(i));
itemdata.put(1, String.valueOf(2*i));
datalist.add(itemdata);
}
ArrayList<HashMap<Integer,String>> datalist2 = new ArrayList<HashMap<Integer,String>>();
SerializableMap tmpmap = new SerializableMap();
tmpmap.setDownLoadDataList(datalist);
datalist2 = saveAndGetData(tmpmap);
System.out.println(datalist2.toString());
}
//存储序列化的集合和读取存储的数据
public static ArrayList<HashMap<Integer,String>> saveAndGetData(SerializableMap tmpmap)
{
ArrayList<HashMap<Integer,String>> rearraylist = null;
FileOutputStream fileOutputStream = null;
ObjectOutputStream objectOutputStream = null;
FileInputStream fileInputStream = null;
ObjectInputStream objectInputStream = null;
try {
//存入数据
File file = new File("D:/"+"markfirst.txt");
if (!file.getParentFile().exists()) {
file.getParentFile().mkdirs();
}
if (!file.exists()) {
file.createNewFile();
}
//该段代码将序列化的数据写入文件
/* fileOutputStream= new FileOutputStream(file.toString());
objectOutputStream= new ObjectOutputStream(fileOutputStream);
objectOutputStream.writeObject(tmpmap);*/
//取出数据
fileInputStream = new FileInputStream(file.toString());
objectInputStream = new ObjectInputStream(fileInputStream);
SerializableMap mMap =(SerializableMap) objectInputStream.readObject();
// ((ProjectNameApp) ProjectNameApp.getAPP()).setDownLoadDataList(mMap.getDownLoadDataList());
rearraylist = mMap.getDownLoadDataList();
/* for (int i = 0; i < savedArrayList.size(); i++) {
//System.out.println("取出的数据:" + savedArrayList.get(i).toString());
}*/
} catch (Exception e) {
// TODO: handle exception
}finally{
if (objectOutputStream!=null) {
try {
objectOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (fileOutputStream!=null) {
try {
fileOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (objectInputStream!=null) {
try {
objectInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (fileInputStream!=null) {
try {
fileInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return rearraylist;
}
}
序列化就是把一个类的对象封装成一个文件,用于传输和存储。反序列化就是把该文件还原到之前的对象。
二 实例研究:本实例针对序列化存储一个集合数据和反序列化得到集合数据。在代码中注意相关代码的注释和解开注释,便于测试。
首先要将序列化的对象继承Serializable
public class SerializableMap implements Serializable {
private static final long serialVersionUID = 1L;
private ArrayList<HashMap<Integer, Str
4000
ing>> downLoadDataList =new ArrayList<HashMap<Integer,String>>();
public ArrayList<HashMap<Integer, String>> getDownLoadDataList() {
return downLoadDataList;
}
public void setDownLoadDataList(
ArrayList<HashMap<Integer, String>> downLoadDataList) {
this.downLoadDataList = downLoadDataList;
}
}
public class Test {
/**
* @param args
* @throws FileNotFoundException
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//测试序列化集合存储和反序列化读取数据=================
//向集合中写入数据
ArrayList<HashMap<Integer,String>> datalist = new ArrayList<HashMap<Integer,String>>();
for(int i=0;i<5;i++)
{
HashMap<Integer,String> itemdata = new HashMap<Integer,String>();
itemdata.put(0, String.valueOf(i));
itemdata.put(1, String.valueOf(2*i));
datalist.add(itemdata);
}
ArrayList<HashMap<Integer,String>> datalist2 = new ArrayList<HashMap<Integer,String>>();
SerializableMap tmpmap = new SerializableMap();
tmpmap.setDownLoadDataList(datalist);
datalist2 = saveAndGetData(tmpmap);
System.out.println(datalist2.toString());
}
//存储序列化的集合和读取存储的数据
public static ArrayList<HashMap<Integer,String>> saveAndGetData(SerializableMap tmpmap)
{
ArrayList<HashMap<Integer,String>> rearraylist = null;
FileOutputStream fileOutputStream = null;
ObjectOutputStream objectOutputStream = null;
FileInputStream fileInputStream = null;
ObjectInputStream objectInputStream = null;
try {
//存入数据
File file = new File("D:/"+"markfirst.txt");
if (!file.getParentFile().exists()) {
file.getParentFile().mkdirs();
}
if (!file.exists()) {
file.createNewFile();
}
//该段代码将序列化的数据写入文件
/* fileOutputStream= new FileOutputStream(file.toString());
objectOutputStream= new ObjectOutputStream(fileOutputStream);
objectOutputStream.writeObject(tmpmap);*/
//取出数据
fileInputStream = new FileInputStream(file.toString());
objectInputStream = new ObjectInputStream(fileInputStream);
SerializableMap mMap =(SerializableMap) objectInputStream.readObject();
// ((ProjectNameApp) ProjectNameApp.getAPP()).setDownLoadDataList(mMap.getDownLoadDataList());
rearraylist = mMap.getDownLoadDataList();
/* for (int i = 0; i < savedArrayList.size(); i++) {
//System.out.println("取出的数据:" + savedArrayList.get(i).toString());
}*/
} catch (Exception e) {
// TODO: handle exception
}finally{
if (objectOutputStream!=null) {
try {
objectOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (fileOutputStream!=null) {
try {
fileOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (objectInputStream!=null) {
try {
objectInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (fileInputStream!=null) {
try {
fileInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return rearraylist;
}
}
相关文章推荐
- python序列化(数据本地存放持久性存储)和反序列化
- 利用php的序列化和反序列化来做简单的数据本地存储
- unity Dictionary序列化和反序列化及XML本地数据存储
- 浅析avro序列化和反序列化源码及提供两种数据序列存储思路
- J2ME实战:蓝牙联网俄罗斯方块(4)—数据传输序列化与游戏地图存储模块( 未完待
- .net泛型在序列化、反序列化JSON数据中的应用
- Unity 中使用C#的序列化和反序列化处理游戏数据
- 使用Weka进行数据挖掘(Weka教程九)模型序列化/持久化存储和加载
- 格式化程序尝试对消息反序列化时引发异常: 尝试对参数 http://tempuri.org/ 进行反序列化时出错: GetLzdtArticleResult。InnerException 消息是“反序列化对象 属于类型 lzdt.DTO.Dtolzdt[] 时出现错误。读取 XML 数据时,超出最大
- VB6各数据类型序列化和反序列化
- 使用序列化和反序列化来存储一个对象案例
- Redis– Jedis存储Java对象 - (Java序列化为byte数组方式) Java 序列化和反序列化
- WCF序列化反序列化数据数组超限 解决方式
- Scrapy爬虫系列笔记之六:使用item以及对得到的数据进行存储以及处理_by_书訢
- 【转】【UNITY3D 游戏开发之五】Google-protobuf与FlatBuffers数据的序列化和反序列化
- ios开发:NSKeyedUnarchiver,数据序列化,本地存储
- fastjson生成和解析json数据,序列化和反序列化数据
- fastjson生成和解析json数据,序列化和反序列化数据
- java中fastjson生成和解析json数据(序列化和反序列化数据)
- fastjson生成和解析json数据,序列化和反序列化数据