我的Java程序将其数据保存到二进制文件中,并且(非常)文件由于硬件故障而偶尔会损坏.通常,在几兆字节的文件中只影响几个字节.为了解决这个问题,我可以将数据写两次,但这似乎有点过分 - 我宁愿将文件大小增加到约20%.
在我看来,这类似于通过"嘈杂"数据流发送信息的问题.是否有可以将冗余信息写入输出流的Java库或算法,以便接收器可以在引入噪声时恢复?
你想要的是错误纠正码.检查此代码:http://freshmeat.net/projects/javafec/
同样,维基百科文章可能会为您提供更多信息:http: //en.wikipedia.org/wiki/Forward_error_correction
您的两种可能性是前向纠错,您可以在其中发送冗余数据,或者用于检测错误的系统,您可以在其中检查哈希值并重新请求任何已损坏的数据.如果腐败是预期的事情,那么纠错就是采取的方法.
如果不了解您的环境的性质,提供更具体的建议是不可能的,但这应该让您开始知道如何解决这个问题.