Java 反序列化文件以删除对象,然后再次执行序列化

Java 反序列化文件以删除对象,然后再次执行序列化,java,serialization,deserialization,Java,Serialization,Deserialization,我正在尝试对文件“series.dat”进行反序列化,以删除其中的一个对象。我的方法是首先进行反序列化,然后将每个对象添加到数组中,然后删除包含我要删除的对象的数组位置。然后,当我再次完成Seralization时 问题是,它只读取一个对象,而实际上有三个对象 public static void EliminarLs(int posicion) throws FileNotFoundException, IOException, ClassNotFoundException{

我正在尝试对文件“series.dat”进行反序列化,以删除其中的一个对象。我的方法是首先进行反序列化,然后将每个对象添加到数组中,然后删除包含我要删除的对象的数组位置。然后,当我再次完成Seralization时

问题是,它只读取一个对象,而实际上有三个对象

    public static void EliminarLs(int posicion) throws FileNotFoundException, IOException, ClassNotFoundException{
        try{
   
            List<Object> results = new ArrayList<Object>();
            
FileInputStream fis = new FileInputStream("series.dat");

ObjectInputStream ois = new ObjectInputStream(fis);

try {
  
 
    while (true) {
        results.add(ois.readObject());
    }
    
  
} catch (OptionalDataException e) {
    if (!e.eof) 
        throw e;
} finally {
    System.out.println(results.size());
    results.remove(posicion);
    ois.close();
}



fis.close();
        } catch(IOException ex){
            System.out.println(ex);
        }
    }
    ```
    The error: Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: Index: 3, Size: 1

Any idead why? Or a better way to do so.
Thanks in advance!
publicstaticvoideliminarls(intposicion)抛出FileNotFoundException、IOException、ClassNotFoundException{
试一试{
列表结果=新建ArrayList();
FileInputStream fis=新的FileInputStream(“series.dat”);
ObjectInputStream ois=新ObjectInputStream(fis);
试一试{
while(true){
add(ois.readObject());
}
}捕获(可选数据异常e){
如果(!e.eof)
投掷e;
}最后{
System.out.println(results.size());
结果:移除(posicion);
ois.close();
}
fis.close();
}捕获(IOEX异常){
系统输出打印项次(ex);
}
}
```
错误:线程“AWT-EventQueue-0”java.lang.IndexOutOfBoundsException中出现异常异常:索引:3,大小:1
你知道为什么吗?或者是一个更好的方法。
提前谢谢!

这不是反序列化,但我不打算深入讨论。您所做的只是逐行读取文件,将行添加到数组中,然后删除特定行,如图所示:

results.remove(posicion);
没有任何东西表明您正在查找任何特定内容,它只是根据您输入的参数删除数组中的第n个元素

public static void EliminarLs(int posicion)
出现错误的原因是,您试图删除数组外部位置上的元素,在您的情况下,您试图从一行文件中删除第四行