博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ObjectInputStream&ObjectOutputStream工具类
阅读量:7187 次
发布时间:2019-06-29

本文共 2577 字,大约阅读时间需要 8 分钟。

序列化:将数据保存到文件;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
fileToLst() { List
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
) 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
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

你可能感兴趣的文章
【动态规划】bzoj1613 [Usaco2007 Jan]Running贝茜的晨练计划
查看>>
delphi實現按键精靈的功能
查看>>
Ubuntu 13.04有线连接异常
查看>>
DB2 错误解释
查看>>
JAVA面试考点解析(7):分布式架构、微服务治理
查看>>
C++ 异常处理
查看>>
Intrumetation单元测试框架
查看>>
Struts2中param的作用
查看>>
java web项目启动加载顺序
查看>>
一个简单的载入图片等待状态的Loading代码
查看>>
Lua面线对象学习
查看>>
python时间转换
查看>>
laravel4通过控制视图模板路劲来动态切换主题
查看>>
《空中交通管理基础》-潘卫军主编-第三章-航空器和飞行高度层
查看>>
窗口渐显
查看>>
话说回车和换行
查看>>
织梦dede标签tags的美化教程
查看>>
GATE使用笔记(使用自带的GUI界面)
查看>>
找出符合下图的互联网产品实例
查看>>
性能测试的相关名词
查看>>