2017-06-26 106 views
3

我的團隊需要一種防彈的方式來保存Windows 10 IOT上的文件(小於100kb)。在Windows 10 IOT中安全地保存文件IOT

的文件不能被破壞,但它的確定失去最新版本,如果保存失敗,因爲斷電等

由於文件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); 

總之,有沒有一種安全的方式來一些文本保存到永遠不會損壞文件的文件?

+0

請讓我們知道,如果我的回答是可以接受的,並請註明我的回答爲答案,如果它幫助你。 –

回答

0

不知道是否有這方面的一個最佳實踐,但是如果需要拿出自己的東西:

我會做類似計算校驗和保存文件一起。

下一次保存時,請勿覆蓋它,而應將其保存在前一個(應該是「已知的」)旁邊,並且只有在驗證新保存成功完成後才刪除前一個(與校驗)

此外,我會假設,重命名操作不應該損壞文件,但我還沒有研究這