Comment effacer le contenu d'un fichier ?
J'ai un fichier hardlinked a, et j'utilise File.WriteAllText
il semble que cela supprime parfois ( ?) le fichier puisque les liens durs ne sont pas mis à jour.
Vous pouvez utiliser le File.WriteAllText méthode.
System.IO.File.WriteAllText(@"Path/foo.bar",string.Empty);
J'ai un fichier hardlinked a, et j'utilise File.WriteAllText
il semble que cela supprime parfois ( ?) le fichier puisque les liens durs ne sont pas mis à jour.
Je vous recommande de ne pas le faire si une autre opération doit accéder au fichier juste après cette opération. J'ai rencontré un problème où le fichier n'a pas été fermé en écriture après cette ligne de code, ce qui a causé IO exceptions of file is in use
Je vous recommande donc de le gérer manuellement via le flux de fichiers.
C'est ce que j'ai fait pour effacer le contenu du fichier sans créer un nouveau fichier car je ne voulais pas que le fichier affiche la nouvelle heure de création même lorsque l'application vient de mettre à jour son contenu.
FileStream fileStream = File.Open(<path>, FileMode.Open);
/*
* Set the length of filestream to 0 and flush it to the physical file.
*
* Flushing the stream is important because this ensures that
* the changes to the stream trickle down to the physical file.
*
*/
fileStream.SetLength(0);
fileStream.Close(); // This flushes the content, too.
Olive, si cela répond à votre question, veuillez le marquer comme une réponse. Toutefois, si la solution proposée ne fonctionne pas dans votre cas, veuillez nous le faire savoir même dans ce cas.
+1 C'est la seule façon d'acquérir d'abord un verrou de fichier, de vérifier les attributs du fichier en toute sécurité et enfin d'effacer le contenu.
Il peut y avoir des problèmes si vous essayez de créer le fichier peu de temps après la suppression. Parfois, le système d'exploitation ne parvient pas à créer le fichier car il "pense" que le fichier existe toujours.
Dmitry Lobanov - [Je sais que c'est un vieux sujet]. Je n'accepte pas que le système d'exploitation pense parfois qu'un fichier existe toujours, sauf s'il y a une bonne raison. Ce serait un très mauvais système d'exploitation si c'était le cas. Il est BEAUCOUP plus probable que quelque chose ait encore une poignée ouverte sur le fichier existant. Il peut même s'agir de votre propre logiciel si vous ne faites pas attention à la fermeture des fichiers (en utilisant 'using' par exemple pour assurer l'élimination). Cela peut aussi être l'anti-virus. Mais je suis d'accord avec votre conclusion. Je pense que FileMode.Truncate est la solution.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.