Java 反序列化文件以删除对象,然后再次执行序列化
我正在尝试对文件“series.dat”进行反序列化,以删除其中的一个对象。我的方法是首先进行反序列化,然后将每个对象添加到数组中,然后删除包含我要删除的对象的数组位置。然后,当我再次完成Seralization时 问题是,它只读取一个对象,而实际上有三个对象Java 反序列化文件以删除对象,然后再次执行序列化,java,serialization,deserialization,Java,Serialization,Deserialization,我正在尝试对文件“series.dat”进行反序列化,以删除其中的一个对象。我的方法是首先进行反序列化,然后将每个对象添加到数组中,然后删除包含我要删除的对象的数组位置。然后,当我再次完成Seralization时 问题是,它只读取一个对象,而实际上有三个对象 public static void EliminarLs(int posicion) throws FileNotFoundException, IOException, ClassNotFoundException{
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)
出现错误的原因是,您试图删除数组外部位置上的元素,在您的情况下,您试图从一行文件中删除第四行