2017-06-26 6 views
3

Mon équipe a besoin d'un moyen pare-balles pour enregistrer un fichier (moins de 100 Ko) sur Windows 10 IOT.Enregistrer en toute sécurité un fichier sous Windows 10 IOT

Le fichier ne peut pas être corrompu, mais il est correct de perdre la version la plus récente si sauvegarde a échoué en raison de la mise hors tension, etc.

Puisque nous ne savons pas comment le fichier IO a changé de manière significative (plus File.Replace) pour y arriver.

Nous pouvons voir que:

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

est fiable peu fiable (il a cassé à plusieurs reprises lors de l'arrêt de débogage, ou réinitialiser l'appareil.) Et nous termine avec un fichier corrompu (plein de zéros) et et Fichier .tmp à côté de lui. Nous pouvons récupérer ce fichier .tmp Je ne suis pas convaincu que nous devrions baser notre solution sur un comportement non documenté.

Une façon que nous voulons essayer est:

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); 

En résumé, il est un moyen sûr d'enregistrer un texte dans un fichier que le fichier ne sera jamais corrompu?

+0

S'il vous plaît laissez-nous savoir si ma réponse était acceptable, et s'il vous plaît marquer ma réponse que la réponse si ça t'a aidé. –

Répondre

0

Je ne sais pas s'il y a une meilleure pratique pour cela, mais si nécessaire pour trouver quelque chose de moi-même:

Je ferais quelque chose comme le calcul d'une somme de contrôle et enregistrer ce avec le fichier. Lors de la sauvegarde suivante, ne pas l'écraser mais l'enregistrer à côté du précédent (qui devrait être "connu"), et ne supprimer le précédent qu'après avoir vérifié que la nouvelle sauvegarde s'est bien déroulée (avec la somme de contrôle)

aussi je suppose qu'une opération de changement de nom ne doit pas corrompre le fichier, mais je n'ai pas fait des recherches que