序列化:将数据保存到文件;ObjectOutputStream;
反序列化:将文件中的数据显示出来;ObjectInputStream;
 
在反序列化程序中运行后能够正常输出Person的相关信息,但是在目录下的文件“person.obj”用文本编辑器打开之后却是乱码的。这是为什么呢?是不是因为写出去的编码和文本编辑器的默认编码采用了不一样的字符集?然后我们就开始想怎么能够将二者的编码格式设为一致的。
其实,这么想一开始就是错误的。为什么这么说呢,因为序列化和反序列化都是基于二进制流的,也就是说,在第二步中,其实就是将person的相关信息转化为二进制存储在了person.obj这个文件中,那么用文本编辑器打开查看的话当然是会出现乱码的。只有通过反序列化才能将存储的二进制读取出来,然后正常显示在控制台上。
package com.util;

import com.bean.*;

import java.util.*;
import java.io.*; public class StudentUtil {
/**
* 从文件中获取Student集合对象List
* */
public static List<Student> fileToLst() {
List<Student> lsst = null; // 获取存放学生集合的文件对象
File file = new File("stu.bin"); try {
if (file.exists()) {
// 创建文件输入流对象
FileInputStream fin = new FileInputStream(file); // 创建缓冲区输入流对象
BufferedInputStream bin = new BufferedInputStream(fin); // 创建对象输入流
ObjectInputStream oin = new ObjectInputStream(bin); // 从对象输入流中获取学生的集合对象
lsst = (List<Student>) oin.readObject();
oin.close();
return lsst;
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return lsst;
} /**
* 向文件中存放学生的集合对象
* */
public static boolean listToFile(ArrayList<Student> lsst) {
// 创建文件对象,指定文件存放的路径
File file = new File("stu.bin");
// 集合中有元素存在,向文件中写入数据
if (lsst != null && !lsst.isEmpty()) {
try {
FileOutputStream fout = new FileOutputStream(file); // 创建缓冲区输出流对象
BufferedOutputStream bout = new BufferedOutputStream(fout); // 创建对象输出流
ObjectOutputStream obout = new ObjectOutputStream(bout); obout.writeObject(lsst); obout.flush();
obout.close();
return true;
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return false;
}
}

ObjectInputStream&ObjectOutputStream工具类的更多相关文章

  1. Android常见工具类封装

    MD5加密 import android.annotation.SuppressLint; import java.security.MessageDigest; public class MD5 { ...

  2. java文件处理工具类

    import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.BufferedRead ...

  3. java格式处理工具类

    import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOExceptio ...

  4. JAVA的RSA加密算法工具类

    须要用到一个jar http://www.bouncycastle.org/latest_releases.html 须要注意的问题 JS用同一秘钥生成的密文用java解密出来是逆序的,即js加密12 ...

  5. 数据持久化之SP的优化—送工具类

    第一点:sp存储的是键值对 getSharedPreferences 第一个參数是你保存文件的名字,第个是保存的模式一般能够默觉得0 先看普通 使用SP 存储String类型字符串吧 SharedPr ...

  6. redis缓存工具类,提供序列化接口

    1.序列化工具类 package com.qicheshetuan.backend.util; import java.io.ByteArrayInputStream; import java.io. ...

  7. 关于RSA加密算法的工具类

    关于RSA加密算法的工具类 最近在捣鼓SSO(单点登录),就是一个在应用(系统)登录之后,当切换其他应用(系统)的时候,可以省去登录,提高用户的使用的便捷.(具体有时间在写) 期间涉及的安全问题,发送 ...

  8. RedisUtil工具类

    转载:http://blog.csdn.net/liuxiao723846/article/details/50401406 1.使用了jedis客户端,对redis进行了封装,包括: 1)使用了re ...

  9. java中定义一个CloneUtil 工具类

    其实所有的java对象都可以具备克隆能力,只是因为在基础类Object中被设定成了一个保留方法(protected),要想真正拥有克隆的能力, 就需要实现Cloneable接口,重写clone方法.通 ...

随机推荐

  1. python基础之多态与多态性、绑定方法和非绑定方法

    多态与多态性 多态 多态并不是一个新的知识 多态是指一类事物有多种形态,在类里就是指一个抽象类有多个子类,因而多态的概念依赖于继承 举个栗子:动物有多种形态,人.狗.猫.猪等,python的序列数据类 ...

  2. [bzoj1999][noip2007]Core树网的核

    好久没写题解了.这题不算太水就写一下题解. 话说回来,虽然不水但是挺裸.可以说题意即一半题解了. 我猜粘了题面也没有人去看的,所以直接人话题意了. 给一棵树,点数1e6,(当年noip的n当然是只有3 ...

  3. 1 Mongodb安装

    1.NoSQL简介 NoSQL,全名Not Only SQL,指的是非关系型的数据库 随着访问量的上升,网站的数据库性能出现了问题,于是NoSQL被设计出来了 优点.缺点 优点 高扩展性 分布式计算 ...

  4. 我教你怎么玩转git

    我教你怎么玩转git 1.想要练习解决冲突? 很好办.创建本地分支,a,b, a上面,这样改.b上面那样改. 然后你就解决冲突就可以了. 可以merge 或者cheerypick 2.想要玩一个不要历 ...

  5. Android 打印方法调用堆栈

    RuntimeException here = new RuntimeException("here"); here.fillInStackTrace(); Log.w(" ...

  6. MySQL 5.7.18 压缩包版配置记录

    1.解压到一个目录(建议根目录),比如:D:\mysql2.在系统Path中添加 D:\mysql\bin3.这个版本不带my-default.ini,需要自己写,放在D:\mysql\my.ini, ...

  7. 【Gradient Boosted Decision Tree】林轩田机器学习技术

    GBDT之前实习的时候就听说应用很广,现在终于有机会系统的了解一下. 首先对比上节课讲的Random Forest模型,引出AdaBoost-DTree(D) AdaBoost-DTree可以类比Ad ...

  8. IIS Express mime type 列表。

    C:\Users\Administrator\Documents\IISExpress\config\applicationhost.config -------------------------- ...

  9. 数据分析—NaN数据处理

    目的 1.查找NaN值(定位到哪一列.在列的哪个索引位置) 2.填充NaN值(向上填充.向下填充.线性填充等) 3.过滤NaN值 构建简单的Dataframe数据结构环境 import pandas ...

  10. rtmp jwplayer简单应用

    在nginx下使用,放到nginx/html文件夹内,之后访问 首先是播放vod视频 <!DOCTYPE html> <html xmlns="http://www.w3. ...