老师,运行程序后,imooc.txt文件内容是乱码
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积分~
来为老师/同学的回答评分吧
0 星