【发布时间】:2018-11-04 04:28:08
【问题描述】:
我有以下代码来保存数据:
File.Copy("data.txt", "data_backup.txt", true);
File.WriteAllText("data.txt", JsonConvert.SerializeObject(new
{
bool1,
string1,
decimal1,
decimal2,
int1,
datetime,
object1,
object2
}, new JsonSerializerSettings { Formatting = Formatting.Indented, Converters = new List<JsonConverter>() { new DontIntendArray() } }));
我的程序每 15 秒执行一次。 data.txt 的大小约为 9 MB。
我的电脑有时会崩溃,然后在重新启动后我发现 data.txt 中充满了 NULL 字符,而它的大小仍然保持在 9 MB 左右。 这就是为什么我添加了 data_backup.txt 行,但它没有帮助,因为它还保存了充满 NULL 的文件。
请注意,并非每台计算机都会发生这种情况,但显然只有在执行此代码时崩溃时才会发生。
我在我的 RAM 上使用 XMP 配置文件时遇到了这种情况,该配置文件不稳定并且不时导致崩溃。在 XMR 配置文件不稳定的两台不同计算机上,情况完全相同。 我在停电的时候也经历过。
我知道我不能指望崩溃的计算机完美地执行所有代码然后才崩溃。 但是,我可以使用任何技巧来防止在计算机崩溃之前或之前写入或保存的文件内容丢失吗? 定期将这些变量保存到文件中的全部目的是为了防止在计算机崩溃的情况下丢失数据,但显然这种方法并不总是有效。
【问题讨论】:
-
你能通过代码自动检测错误/损坏的数据吗?
-
我还没有故意让它崩溃来测试它。只有在未损坏的情况下,我才明白您在 WriteAllText 之后使用 File.Copy 的观点。谢谢。
标签: c# null crash writealltext