Supprimer la première ligne d’un fichier texte en C #

Je peux actuellement supprimer la dernière ligne d’un fichier texte en utilisant:

var lines = System.IO.File.ReadAllLines("test.txt"); System.IO.File.WriteAllLines("test.txt", lines.Take(lines.Length - 1).ToArray()); 

Bien que, comment est-il possible de supprimer le début du fichier texte?

Au lieu de lines.Take . lines.Take plutôt des lines.Skip .

 var lines = File.ReadAllLines("test.txt"); File.WriteAllLines("test.txt", lines.Skip(1).ToArray()); 

tronquer au début malgré le fait que la technique utilisée (lire tout le texte et tout réécrire) est très inefficace.

À propos de l’efficacité: L’inefficacité provient de la nécessité de lire le fichier en entier. L’autre moyen pourrait être de chercher dans un stream et de copier le stream dans un autre fichier de sortie, de supprimer l’original et de renommer l’ancien. Celui-ci serait tout aussi rapide et consumrait beaucoup moins de mémoire.

Tronquer un fichier à la fin est beaucoup plus facile. Vous pouvez simplement trouver la position de la trunaction et appeler FileStream.SetLength() .

 var lines = System.IO.File.ReadAllLines("test.txt"); System.IO.File.WriteAllLines("test.txt", lines.Skip(1).ToArray()); 

Skip élimine le nombre donné d’éléments du début de la séquence. Take élimine tout sauf le nombre donné d’éléments de la fin de la séquence.

Voici une alternative:

  using (var stream = File.OpenRead("C:\\yourfile")) { var items = new LinkedList(); using (var reader = new StreamReader(stream)) { reader.ReadLine(); // skip one line ssortingng line; while ((line = reader.ReadLine()) != null) { //it's far better to do the actual processing here items.AddLast(line); } } } 

Mettre à jour

Si vous avez besoin d’une IEnumerable et que vous ne voulez pas gaspiller de mémoire, vous pouvez faire quelque chose comme ceci:

  public static IEnumerable GetFileLines(ssortingng filename) { using (var stream = File.OpenRead(filename)) { using (var reader = new StreamReader(stream)) { reader.ReadLine(); // skip one line ssortingng line; while ((line = reader.ReadLine()) != null) { yield return line; } } } } static void Main(ssortingng[] args) { foreach (var line in GetFileLines("C:\\yourfile.txt")) { // do something with the line here. } } 

Pour supprimer la première ligne d’un fichier texte

 System.IO.StreamReader file = new System.IO.StreamReader(filePath); ssortingng data = file.ReadToEnd(); file.Close(); data = Regex.Replace(data, "<.*\n", ""); System.IO.StreamWriter file = new System.IO.StreamWriter(filePath, false); file.Write(data); file.Close();