88 votes

Effacer le contenu d'un fichier

Comment effacer le contenu d'un fichier ?

142voto

The Scrum Meister Points 17215

Vous pouvez utiliser le File.WriteAllText méthode.

System.IO.File.WriteAllText(@"Path/foo.bar",string.Empty);

0 votes

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.

2 votes

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.

87voto

Abhay Jain Points 321

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.

0 votes

J'ai utilisé .NET 3.5, au cas où vous voudriez connaître la version.

0 votes

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.

5 votes

+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.

13voto

sajoshi Points 1993

Utilisez FileMode.Truncate à chaque fois que vous créez le fichier. Placez également le File.Create à l'intérieur d'un try catch .

2voto

Kartikya Points 352

La façon la plus simple de le faire est peut-être de supprimer le fichier via votre application et d'en créer un nouveau avec le même nom... ou encore plus simple, de faire en sorte que votre application l'écrase avec un nouveau fichier.

2 votes

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.

1 votes

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.

2voto

astander Points 83138

Essayez d'utiliser quelque chose comme

Fichier.Créer

Crée ou écrase un fichier dans le fichier chemin d'accès spécifié.

1 votes

Ce n'est pas une bonne idée pour la question posée : Il ne supprime pas les données déjà présentes dans le fichier - il les écrase seulement jusqu'à la longueur des nouvelles données, donc si les anciennes données > les nouvelles, vous vous retrouverez avec un mélange des deux.

Prograide.com

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.

Powered by:

X