gpt4 book ai didi

java - 磁盘空间不足会导致 java.lang. io。 EOF异常

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:04:54 24 4
gpt4 key购买 nike

今天在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);

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

谢谢

最佳答案

我的怀疑是写文件的时候因为磁盘空间已经用完而抛出了ioexception,但是序列化数据的开头还是写入了磁盘。这意味着存储在磁盘上的序列化数据不完整,因此读取它会产生无效结果,在您的情况下会导致 EOF 异常

为了解决这个问题,需要通过exception.getMessage()查看磁盘空间耗尽抛出IO异常的时间,确保不要写入不完整的数据。

关于java - 磁盘空间不足会导致 java.lang. io。 EOF异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40992148/

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