>我有以下代码来保存数据:
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 秒执行一次。 数据大小.txt约为 9 MB。
当我的计算机崩溃时,重新启动后,我发现数据.txt充满了空字符,而其大小仍约为9 MB。 这就是为什么我添加了data_backup.txt行,但它没有帮助,因为它也保存了充满 NULL 的文件。
请注意,这不会在每台计算机上发生,但显然只有在执行此代码时崩溃时才会发生。
我在RAM上使用XMP配置文件时遇到了这种行为,该配置文件不稳定,不时导致崩溃。在XMR配置文件不稳定的两台不同计算机上完全相同。 我在停电期间也经历过。
我知道我不能指望崩溃的计算机完美地执行所有代码,然后才崩溃。 但是,我可以使用任何技巧来防止在计算机崩溃之前或之前立即写入或保存的文件内容丢失? 定期将这些变量保存到文件中的全部目的是防止在计算机崩溃时丢失数据,但显然这种方法并不总是有效。
您应该保存到新文件名,然后在保存后移动新文件以替换原始文件。 这样,无论您何时被打断,您始终拥有一个完整的副本。