磁盘空间有多低会导致java.IO.EOFException类

Dan*_*ush 6 java file-io serialization eofexception

今天我在java序列化和反序列化中遇到了奇怪的行为("奇怪",因为我不明白)

我正在从linux共享目录序列化和反序列化一个对象.序列化一切都没有任何问题,但当我试图反序列化它抛出的同一个文件 java. io. EOFException.此外,反序列化仅对此新创建的文件失败,并且正在为该目录中的所有其他旧文件工作.

所以我在互联网上搜索,发现一个线程说低磁盘空间也可能导致此错误.

所以我清理了一些临时文件,瞧它工作了.我不明白磁盘空间不足只会影响反序列化而不是序列化?

我正在使用apache commons SerializationUtils类.下面是序列化和反序列化的代码

SerializationUtils. serialize(myObject, new FileOutputStream(new File(sharePath+FILEName) ;


MyObject object=SerializationUtils. deserialize( new FileInputStream(new File(sharePath+FILEName);
Run Code Online (Sandbox Code Playgroud)

如果有人可以解释这种行为,那将非常有帮助.我怀疑它在SerializationUtils中的一个错误可能会吞噬IOException.

谢谢

小智 8

我怀疑在编写文件时,由于磁盘空间已用完而导致出现ioexception,但序列化数据的开头仍然写入磁盘.这意味着存储在磁盘上的序列化数据不完整,因此读取它会产生无效结果,在您的情况下会导致EOF异常

为了解决这个问题,您需要查看由于磁盘空间不足而引发IO异常的时间,exception.getMessage()并确保不写入不完整的数据.