gpt4 book ai didi

Java对象序列化,无法关闭ObjectOutputStream?

转载 作者:行者123 更新时间:2023-11-29 05:16:21 26 4
gpt4 key购买 nike

嗨,我正在学习对象序列化并尝试过这个

import java.io.*;
class Employee implements Serializable{
Employee(int temp_id,String temp_name)
{
id=temp_id;
name=temp_name;
}
int id;
String name;
}

public class SerialTest{

public static void main(String[] args)
{
Employee e1=new Employee(14,"John");

try{
FileOutputStream fileStream=new FileOutputStream("myserial.ser");
ObjectOutputStream os=new ObjectOutputStream(fileStream);

os.writeObject(e1);
}
catch(IOException ioex)
{
ioex.printStackTrace();
}
finally{
os.close();
}
}//main ends
}//class ends

程序在我调用

之前运行
os.close();

现在我不编译,我得到错误提示

SerialTest.java:29: cannot find symbol
symbol : variable os
location: class SerialTest
os.close();
^

在我尝试关闭 ObjectOutPutStream 之前它起作用了,序列化文件的内容如下,

¬í^@^Esr^@^HEmployee^S<89>S§±<9b>éØ^B^@^BI^@^BidL^@^Dnamet^@^RLjava/lang/String;xp^ @^@^@^Nt^@^GSainath~
我似乎无法理解我哪里出错了,请帮忙!

最佳答案

您想使用 purpose-built try-with-resources :

    try (ObjectOutputStream os =
new ObjectOutputStream(new FileOutputStream("myserial.ser"));) {
os.writeObject(e1);
} catch(IOException ioex) {
ioex.printStackTrace();
}

关于Java对象序列化,无法关闭ObjectOutputStream?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26439252/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com