Comment supprimer une ligne d'un fichier texte en C#?
J'ai un problème: comment puis-je supprimer une ligne d'un fichier texte en C#?
- Il/elle signifie la façon de le supprimer par programme, je suppose.
Vous devez vous connecter pour publier un commentaire.
Lire le fichier, supprimer la ligne dans la mémoire et placer le contenu dans le fichier (par écrasement). Si le fichier est volumineux, vous pourriez vouloir lire ligne par ligne, et la création d'un fichier temporaire, plus tard, en remplacement de celui d'origine.
Pour très de gros fichiers, je ferais quelque chose comme ça
Mise à jour je écrivit à l'origine de ce retour en 2009 et j'ai pensé qu'il pourrait être intéressant avec une mise à jour. Aujourd'hui, on pourrait y parvenir en utilisant LINQ et l'exécution différée
Le code ci-dessus est presque exactement le même que le premier exemple, la lecture ligne par ligne et en conservant une quantité minimale de données dans la mémoire.
Un avertissement peut être dans l'ordre même si. Puisque nous parlons des fichiers texte ici vous serais très rarement d'utiliser le disque en tant qu'intermédiaire du support de stockage. Si vous n'êtes pas affaire avec de très gros fichiers journaux il devrait y avoir aucun problème pour lire le contenu dans la mémoire et éviter d'avoir à faire avec le fichier temporaire.
Noter que Le
.ToList
est ici crucial pour forcer l'exécution immédiate. Notez également que tous les exemples, les fichiers textes sont codés en UTF-8.Je suis d'accord avec John Saunders, ce n'est pas vraiment C# spécifiques. Cependant, pour répondre à votre question: vous avez besoin de réécrire le fichier. Il y a deux façons dont vous pouvez faire cette.
File.ReadAllLines
)List<string>
puis supprimez la ligne)File.WriteAllLines
) - potentiellement convertir leList<string>
dans un tableau de chaînes, en utilisant à nouveauToArray
Que les moyens vous devez savoir que vous avez suffisamment de mémoire si. Une alternative:
TextReader
/TextWriter
, par exemple, avecFile.OpenText
etFile.CreateText
)TextReader.ReadLine
) - si vous ne voulez pas de les supprimer, de les écrire sur le fichier de sortie (TextWriter.WriteLine
)using
consolidés pour les deux, cela va se faire automatiquement)Pour supprimer un élément à partir d'un fichier texte, d'abord déplacer le texte d'une liste et de les supprimer selon l'élément que vous voulez. Puis écrire le texte stocké dans la liste dans un fichier texte:
J'ai étendu ce Markus Olsson a suggéré, et est venu avec cette classe qui ajoute plusieurs chaînes de recherche et un couple de cas:
Utilisation:
J'avais très simplement:
J'ai écrit une méthode pour supprimer des lignes à partir de fichiers.
Ce programme utilise
using System.IO
.Voir mon code:
Pourquoi on ne peut pas l'utiliser?
Tout d'abord, créez un tableau:
Puis regardez en haut de la ligne, vous devez supprimer et remplacer par "" :
Fait!
x
vide. Par conséquent, si vous faisiez cela beaucoup, vous retrouver avec un tas de vide retourne dans le fichier, qui pourrait gâcher l'index.