老师,运行程序后,imooc.txt文件内容是乱码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 | package com.imooc.serial; import java.io.Serializable; public class Goods implements Serializable{ private String goodsId; private String goodsName; private double price; public Goods(String goodsId, String goodsName, double price) { super (); this .goodsId = goodsId; this .goodsName = goodsName; this .price = price; } public String getGoodsId() { return goodsId; } public void setGoodsId(String goodsId) { this .goodsId = goodsId; } public String getGoodsName() { return goodsName; } public void setGoodsName(String goodsName) { this .goodsName = goodsName; } public double getPrice() { return price; } public void setPrice( double price) { this .price = price; } @Override public String toString() { return "商品信息[编号:" + goodsId + ", 名称:" + goodsName + ", 价格:" + price + "]" ; } } package com.imooc.serial; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; public class GoodsTest { public static void main(String[] args) { //定义Goods类对象 Goods goods1= new Goods( "gd001" , "电脑" , 3000 ); try { FileOutputStream fos= new FileOutputStream( "imooc.txt" ); ObjectOutputStream oos= new ObjectOutputStream(fos); FileInputStream fis= new FileInputStream( "imooc.txt" ); ObjectInputStream ois= new ObjectInputStream(fis); //将对象Goods信息写入文件 oos.writeObject(goods1); oos.writeBoolean( true ); oos.flush(); //读对象信息 try { Goods goods=(Goods)ois.readObject(); System.out.println(goods); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println(ois.readBoolean()); fos.close(); oos.close(); fis.close(); ois.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e){ e.printStackTrace(); } } } |
35
收起
正在回答
2回答
同学你好,1. 反序列化是从字节流创建对象的相反的过程。对象反序列化的步骤如下:
1.1、 创建一个对象输入流,它可以包装一个其他类型的源输入流,如文件输入流;
1.2、 通过对象输入流的readObject()方法读取对象。
在视频中也有涉及到哦~ 如图所示:
2. 是的,对象序列化是一个用于将对象状态转换为字节流的过程,可以将其保存到磁盘文件中。imooc.txt文件中的内容是序列化后的内容,所以看起来是乱码,而在控制台输出反序列化的数据。
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
1. Java 零基础入门
- 参与学习 人
- 提交作业 3802 份
- 解答问题 11489 个
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧