我正在使用 Square Tape Queue ( https://github.com/square/tape/ ) 来存储数据。但是我有时会发现这个奇怪的文本,这会在从队列中读取时导致“JSONSyntaxException:预期的 BEGIN_OBJECT 但找到了字符串”。
问问题
132 次
1 回答
0
在https://github.com/square/tape/issues/5中,Tape 开发人员确保 Tape 事务机制与 sqlite 一样安全(它是 Android 中应用数据的主要存储引擎,以及其他经过高度测试的场景)。
我怀疑克莱恩不是真的。磁带在内部非常简单,它完全信任 Java 的 API,而后者只提供对特定文件系统块写入行为的保证,而许多文件系统并不保证。此注释来自磁带的网页:
注意:当前实现是为支持原子段写入的文件系统构建的(如 YAFFS)。大多数传统文件系统不支持这一点。如果在写入段时断电,该段将包含垃圾并且文件将被损坏。
您可以在这里看到,至少在 Windows 上,情况似乎是这样:https ://github.com/square/tape/issues/202
在 Android 上,有报道称三星设备偶尔会出现损坏(可能是因为它使用 ffs 而不是 ext4)。
我很想说,如果您关心数据,请不要依赖磁带——但另一方面,磁带也有相当多的用户群,所以在我看来,这取决于您的应用场景。
于 2019-01-06T13:18:01.010 回答