Quand vider un fichier en Aller?
Quand est-il nécessaire de rincer un fichier?
Je ne le fais jamais parce que je l'ai appel de Fichier.Proximité et je pense qu'il est vidé automatiquement, n'est-ce pas?
- Ce qui fait que vous pensez que .Close() vide automatiquement les octets de stockage? La source pour les gros ne semble pas l'indiquer -- ai-je raté quelque chose?
Vous devez vous connecter pour publier un commentaire.
Vous noterez qu'un os.Fichier ne possède pas un .Flush() parce qu'il n'en a pas besoin car il n'est pas mis en mémoire tampon. Écrit directs appels d'écrire dans le fichier.
Lors de vos sorties de programme(même si elle se bloque) tous les fichiers qu'il a ouvert sera fermée automatiquement par le système d'exploitation et le système de fichiers écrire vos modifications sur le disque quand il fait autour d'elle (parfois jusqu'à quelques minutes après votre programme de sorties).
Appelant os.Fichier.Sync() va appeler le fsync() syscall qui va forcer le système de fichiers pour le rincer en mémoire sur le disque. Cela permettra de garantir que vos données sont sur le disque et persistante, même si le système est éteint ou le système d'exploitation se bloque.
Vous n'avez pas besoin d'appeler .Sync()
fsync
avecfflush
. Vous n'avez pas besoin de quinte d'un tampon de fichier. Cela ne signifie pas que vous n'avez pas besoin de sync si vous voulez une garantie que l'écriture a été commis sur le disque. Piotr Praszmo la réponse est mieux.Voir ici.
File.Sync()
est syscall à fsync. Vous devriez être capable de trouver plus sous ce nom.Gardez à l'esprit que
fsync
n'est pas le même que fflush et n'est pas exécuté avant la clôture.Vous n'avez généralement pas besoin de l'appeler. Le fichier sera écrit sur le disque de toute façon, après un certain temps et si il n'y a pas de panne de courant au cours de cette période.
sync
est le moyen de rendre le programme plus conscients que le stockage sous-jacent est jusqu'à ce jour.fsync
bouffées de chaleur toutfdatasync
n'.Regarde la plupart des recommandations sont de ne pas appeler fsync(), mais en général, il dépend principalement de votre condition d'application. Si vous travaillez sur des points critiques de lecture/écriture de fichiers, il est toujours recommandé d'appeler fsync().
http://www.microhowto.info/howto/atomically_rewrite_the_content_of_a_file.html#idp31936
lien, a plus de détails sur lors de fichier.Sync() va nous aider.
Lorsque vous voulez vous assurer de l'intégrité des données autant que possible. Par exemple, ce qui se passe si votre programme se bloque avant d'en arriver à la fermeture du fichier?