gpt4 book ai didi

c# - 在 Windows 10 IOT 中安全保存文件

转载 作者:行者123 更新时间:2023-12-04 16:20:47 24 4
gpt4 key购买 nike

我的团队需要一种防弹方式在 Windows 10 IOT 上保存文件(小于 100kb)。

该文件不会损坏,但如果由于断电等原因保存失败,可以丢失最新版本。

由于文件 IO 发生了显着变化(不再是 File.Replace),我们不确定如何实现它。

我们可以看到:

var file = await folder.CreateFileAsync(fileName, CreationCollisionOption.OpenIfExists);
await Windows.Storage.FileIO.WriteTextAsync(file, data);

可靠不可靠(在停止调试或重置设备时它反复损坏。)并且我们最终得到一个损坏的文件(充满零)和一个 .tmp 文件旁边。我们可以恢复这个 .tmp 文件我不相信我们应该将我们的解决方案基于未记录的行为。

我们想尝试的一种方法是:
var tmpfile = await folder.CreateFileAsync(fileName+".tmp",
CreationCollisionOption.ReplaceExisting);
await Windows.Storage.FileIO.WriteTextAsync(tmpfile, data);

var file = await folder.CreateFileAsync(fileName, CreationCollisionOption.OpenIfExists);

// can this end up with a corrupt or missing file?
await tmpfile.MoveAndReplaceAsync(file);

总之,是否有一种安全的方法可以将一些文本保存到永远不会损坏文件的文件中?

最佳答案

不确定是否有最佳实践,但如果需要自己想出一些东西:

我会做一些像计算校验和并将它与文件一起保存的事情。

下次保存时,不要覆盖,而是保存在前一个旁边(应该是“已知良好”),只有在验证新保存成功完成后(连同校验和)才能删除前一个

此外,我认为重命名操作不应损坏文件,但我还没有研究过

关于c# - 在 Windows 10 IOT 中安全保存文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44751794/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com