老师,运行程序后,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 星