gpt4 book ai didi

java - 反序列化对象时出现 EOFException

转载 作者:太空宇宙 更新时间:2023-11-04 07:01:41 24 4
gpt4 key购买 nike

我创建了一个方法writeFile,如果标志为true,它会直接写入File。如果该标志为false,它将读取File,检索Object,附加一些内容,然后再次将其保存到File。当标志为 true 时,我收到 EOFException

这是我正在尝试的整个类(class):

public class HandleObjects{

public final static String PATH = "/home/user/Desktop/exp.conf" ;
public static boolean i = true ;
public static void main(String[] args) throws JSONException, IOException, ClassNotFoundException {


JSONObject obj = new JSONObject();
obj.put("id", "something");

JSONObject obj1 = new JSONObject();
obj1.put("key", "xxxxxxxxxxxxxxx");
obj1.put("token", "xxxxxxxxxxxxx");


writeFile(obj,false);
readFile();
writeFile(obj1,true); // Exception occurs here
readFile();

}

public static void writeFile(JSONObject o, boolean flag ) throws FileNotFoundException, IOException, JSONException, ClassNotFoundException{
ObjectOutputStream os = new ObjectOutputStream(new FileOutputStream(PATH)) ;
JSONObject ob = null ;
if (flag){
ob = readfile();
ob.append("extra", o);
os.writeObject(ob.toString());
}
else{
os.writeObject(o.toString());
}

os.flush() ;
os.close();

}
public static JSONObject readFile() throws FileNotFoundException, IOException, JSONException, ClassNotFoundException{
ObjectInputStream is = new ObjectInputStream(new FileInputStream(PATH)) ;

String str= (String) is.readObject() ;

JSONObject o = new JSONObject(str);

is.close() ;
return o ;
}}`

最佳答案

当您处于“追加”模式时,在调用 readfile() 之前,您已经创建了一个新的空文件,因此当您尝试读取对象时,您当然会得到 EOF。没有。您需要在创建 FileOutputStream 之前调用 readfile()。

关于java - 反序列化对象时出现 EOFException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22020334/

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