Java 验证csv文件是否已成功更新

Java 验证csv文件是否已成功更新,java,Java,我在更新csv文件(写入)时遇到问题,如果出现任何异常,例如系统电源也可能关闭或其他应用程序正在读取该文件。 在这种情况下,读取方无法判断csv文件是否已完全更新。 有什么技术(格式)可以解决这个问题吗? 我进行了研究,发现如果文件更新成功,我们可以添加一些关键字,如EOF(xxxx),但有没有想法让plz更标准化?尝试在文件末尾添加校验和或CRC。这将允许您检测在写入文件时是否发生错误 当您读回文件时,只需计算校验和,并将其与保存的校验和进行比较。如果它们不同,则文件不正确 但是,这将使手动修

我在更新csv文件(写入)时遇到问题,如果出现任何异常,例如系统电源也可能关闭或其他应用程序正在读取该文件。 在这种情况下,读取方无法判断csv文件是否已完全更新。 有什么技术(格式)可以解决这个问题吗?
我进行了研究,发现如果文件更新成功,我们可以添加一些关键字,如EOF(xxxx),但有没有想法让plz更标准化?

尝试在文件末尾添加校验和或CRC。这将允许您检测在写入文件时是否发生错误

当您读回文件时,只需计算校验和,并将其与保存的校验和进行比较。如果它们不同,则文件不正确

但是,这将使手动修改文件变得困难。我建议仅当文件不打算手动创建或修改时才这样做

编辑:

校验和与CRC不同,尽管您会听到术语互换使用时出现错误。校验和就是将某个数据单元中的所有数据相加。CRC接收数据并对其执行位操作。校验和更容易,计算速度更快,但比CRC产生更多的误报,因此鲁棒性较差

两者都用于验证数据完整性,通常用于通过网络进行数据传输。它可以很好地实现这一目的,因为您正在将数据从RAM“流”到磁盘。如果在传输过程中发生错误,校验和是检查错误的自然方法

创建一个。当您将字节写入CSV时,它将保持校验和。完成文件写入后,从CheckedOutputStream中检索校验和,并将其写入文件。然后关闭小溪


回读数据时使用。然后将读取时计算的校验和与存储在文件中的校验和进行比较。如果它们相同,则该文件极有可能没有错误。我说极有可能,因为使用校验和或CRC时,误报的可能性非常小。

您好,听起来不错,但您能给我一些关于如何在文件plz中插入校验和的链接吗,因为Web上的研究结果只是显示“在传输文件时,校验和用于错误检查”(),但在更新时不检查文件何时引发异常。我对文件校验和有点陌生,tks!你给出的链接看起来很清楚地解释了一切,甚至有一个代码示例。希望通过我对上述内容的透彻解释,现在事情变得更清楚了?谢谢@Will的解释,但我的问题不在于检查传输csv文件,而在于注意csv文件是否已完全更新。就像添加一个标记来告诉文件是否正常一样。在文件末尾添加任何标记都会告诉您这一点。如果标记丢失,则文件已损坏。否则就好了。