2009-08-31 8 views
1

J'écris une sorte d'outil de sauvegarde qui doit copier tous les fichiers dans un répertoire. Maintenant, j'utilise la méthode File.Copy(String, String, Boolean) de C#. Mais une autre application (que je ne peux pas changer) écrit simultanément dans les fichiers de ce répertoire. Maintenant, je me demande s'il est possible qu'un fichier soit modifié à mi-chemin du processus de copie en créant un fichier de sauvegarde corrompu?Copier un fichier de modification avec File.Copy

Merci

Répondre

3

Non, ce n'est pas le cas. Le système de fichiers sous-jacent s'assurera que cela ne se produit pas.

+0

Est-ce que quelqu'un a une source en ligne qui confirme et explique plus loin cela? J'ai essayé de google moi-même, mais je ne pouvais pas trouver quelque chose de décent. –

+1

Êtes-vous réellement confronté au problème décrit? Voici une description décente: http://en.wikipedia.org/wiki/File_locking#In_Microsoft_Windows Je dirais que cela dépend de la façon dont vous avez ouvert votre fichier. Je parie que FileInfo.CopyTo devrait fonctionner plus que bien pour vous. – Rashack

+0

Non, je n'ai pas rencontré le problème décrit. Mais l'outil de sauvegarde sera utilisé de manière très intensive dans un environnement de production, donc je fais très attention. Je n'ai aucun contrôle sur la façon dont les autres applications ouvrent les fichiers que je sauvegarde. Et j'ai remarqué que la méthode File.Copy fonctionne également lorsqu'une autre application a le verrou en écriture sur un fichier (mais pas le verrou en lecture). J'ai donc craint que cela puisse faire une copie à mi-chemin d'un changement dans le fichier, corrompant ainsi le fichier. Je serais plus à l'aise si je pouvais trouver une source confirmant que cela ne pourrait pas arriver. –