我在更新csv文件(写入)时遇到问题,如果有任何异常抛出,例如系统电源也可能关闭或其他应用程序正在读取该文件。 在这种情况下,读取方无法判断csv文件是否完全更新。 是否有任何技术(格式)来解决这个问题? 我有研究,看到如果文件成功更新,我们可以添加一些关键字,如EOF(xxxx),但有没有想到更标准化的PLZ?
答案 0 :(得分:2)
尝试将校验和或CRC附加到文件末尾。这将允许您检测在写入文件时是否发生错误。
当您回读文件时,只需计算校验和,并将其与保存的校验和进行比较。如果它们不同,则文件很糟糕。
然而,这会使文件难以手工修改。只有在不打算手动创建或修改文件时,我才推荐这个。编辑:
校验和与CRC不同,但您会听到错误地交替使用的术语。校验和只是获取某些数据单元中的所有数据,并将它们全部加在一起。 CRC获取数据并对其执行位操作。校验和更容易,计算速度更快,但导致比CRC更多的误报,因此不太稳健。
两者都用于验证数据完整性,通常用于通过网络进行数据传输。它可以很好地用于此目的,因为您将数据从RAM“流式传输”到磁盘。如果在传输中发生错误,校验和是检查此错误的自然方式。
创建CheckedOutputStream。当您将字节写入CSV时,它将保持校验和。完成文件编写后,从CheckedOutputStream中检索校验和,并将其写入文件。然后关闭流。
在读取数据时使用CheckedInputStream。然后将读取时计算的校验和与存储在文件中的校验和进行比较。如果它们相同,则极有可能该文件没有错误。我说的极有可能是因为校验和或CRC可能存在非常微小的误报可能性。