【发布时间】:2019-08-29 04:31:54
【问题描述】:
我正在尝试读取对象并将其写入文件。将输出读入一个新对象是可行的,但每个值都是空的。
代码如下:
public void read() throws Exception
{
try
{
FileInputStream fIn = new FileInputStream(file);
ObjectInputStream in = new ObjectInputStream(fIn);
Object obj = in.readObject();
System.out.println(obj);
public void save() throws Exception
{
FileOutputStream fOut = new FileOutputStream(file.toString());
ObjectOutputStream out = new ObjectOutputStream(fOut);
out.writeObject(this);
out.flush();
out.close();
}
这是文件输出:(image of output)
我想在创建的新对象中接收我之前写入文件的值,但是我得到的所有值都是 null。
编辑:由于人们要求整个班级,而我不知道是什么代码可能导致什么,这是整个 UserFile 班级:https://pastebin.com/Gr1tcGsg
【问题讨论】:
-
是正确类的新对象吗?还要显示您已序列化的类的来源。你可能有错误。
-
NB 你不需要
file.toString()。只需file即可。您也不需要在关闭前冲洗。 -
@user207421 close 调用flush,是的,他在关闭之前正在flush。
-
好的,我读到他没有冲洗。作为对象流的一种良好做法,在写入推送标头后刷新它很好。但这是特定流实现的一般规则。
-
不,他们不是。这是 ObjectOutputStream 的一般规则。
标签: java objectinputstream objectoutputstream