序列化:将数据保存到文件;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;}
}

转载于:https://www.cnblogs.com/YLQBL/p/6598444.html

ObjectInputStreamObjectOutputStream工具类相关推荐

  1. java日期转化工具类

    package com.rest.ful.utils;import java.text.DateFormat; import java.text.ParseException; import java ...

  2. java数据类型相互转换工具类

    package com.rest.ful.utils;import java.util.ArrayList; import java.util.HashMap; import java.util.Li ...

  3. 客快物流大数据项目(五十六): 编写SparkSession对象工具类

    编写SparkSession对象工具类 后续业务开发过程中,每个子业务(kudu.es.clickhouse等等)都会创建SparkSession对象,以及初始化开发环境,因此将环境初始化操作封装成工 ...

  4. [JAVA EE] Thymeleaf 常用工具类

    Thymeleaf 提供了丰富的表达式工具类,例如: #strings:字符串工具类 #dates:时间操作和时间格式化 #numbers:格式化数字对象的方法 #bools:常用的布尔方法 #str ...

  5. httpclient工具类,post请求发送json字符串参数,中文乱码处理

    在使用httpclient发送post请求的时候,接收端中文乱码问题解决. 正文: 我们都知道,一般情况下使用post请求是不会出现中文乱码的.可是在使用httpclient发送post请求报文含中文 ...

  6. spring boot 文件上传工具类(bug 已修改)

    以前的文件上传都是之前前辈写的,现在自己来写一个,大家可以看看,有什么问题可以在评论中提出来. 写的这个文件上传是在spring boot 2.0中测试的,测试了,可以正常上传,下面贴代码 第一步:引 ...

  7. SharePreference工具类

    安卓开发一般都需要进行数据缓存,常用操作老司机已为你封装完毕,经常有小伙伴问怎么判断缓存是否可用,那我告诉你,你可以用这份工具进行存储和查询,具体可以查看源码,现在为你开车,Demo传送门. 站点 S ...

  8. java录排名怎么写_面试官:Java排名靠前的工具类你都用过哪些?

    你知道的越多,不知道的就越多,业余的像一棵小草! 你来,我们一起精进!你不来,我和你的竞争对手一起精进! 编辑:业余草 推荐:https://www.xttblog.com/?p=5158 在Java ...

  9. 【转】 Android快速开发系列 10个常用工具类 -- 不错

    原文网址:http://blog.csdn.net/lmj623565791/article/details/38965311 转载请标明出处:http://blog.csdn.net/lmj6235 ...

最新文章

  1. 自学python的书籍逐级推荐-近300本Python书籍到底哪家强,用Python告诉你
  2. php 上万关键字匹配,JavaScript 上万关键字瞬间匹配实现代码
  3. /bin/sh -c的必要性
  4. 计算机配置文章,看电脑配置的“两个”小妙招!
  5. centos路由查看命令_CentOS下使用Route命令添加路由
  6. esp32搭建文件服务器,ESP32入门示例 - SD卡Web服务器
  7. Nginx安装及配置反向代理
  8. sql server死锁_了解SQL Server死锁图的图形表示
  9. 转Git学习碰到的问题
  10. tortoisegit pull 远程拉取代码,提示需要密码
  11. Compile LLVM+CLANG 4.0.1 for RHEL6
  12. 今天是雾霾,明天是什么?马尔可夫链告诉你
  13. 【android免root脚本制作】自动坐标操作手机——京东金融程序金果摇钱树自动收金果
  14. FIT2CLOUD飞致云发布MeterSphere开源持续测试平台
  15. matlab怎么定义plot函数线的类型,matlabplot函数线型
  16. 一个页面崩溃,其他页面也跟着崩溃
  17. vs登录或者添加账户时说脚本错误
  18. Unity3D 场景切换
  19. ipad/iphone内存管理二
  20. 自动驾驶(十四)---------车道线检测

热门文章

  1. Java之美[从菜鸟到高手演变]系列之博文阅读导航
  2. Fescar TC-commit流程
  3. 使用python连接数据库
  4. 磁金融宣布完成1.2亿元B轮融资,宽带资本领投
  5. Android:打造“万能”Adapter与ViewHolder
  6. 数据结构与算法书籍推荐
  7. ros使用QT插件开发
  8. 《算法入门经典大赛——培训指南》第二章考试
  9. MySQL 5.6 双机热备
  10. 解决sqlserver1433端口占用问题