2010-05-20 5 views
3

Je dois supprimer la dernière ligne d'un fichier texte. Je sais comment ouvrir et enregistrer des fichiers texte en C#, mais comment je supprimer la dernière ligne du fichier texte?Dénuder la dernière ligne d'un fichier texte

Le fichier texte sera toujours de taille différente (certains ont 80 lignes, d'autres 20).

Quelqu'un peut-il s'il vous plaît me montrer comment faire cela?

Merci.

Répondre

4

Avec un petit nombre de lignes, vous pouvez facilement utiliser quelque chose comme ça

string filename = @"C:\Temp\junk.txt"; 

string[] lines = File.ReadAllLines(filename); 
File.WriteAllLines(filename, lines.Take(lines.Count() - 1)); 

Cependant, comme les fichiers sont plus volumineux, vous voudrez peut-être diffuser les données à l'intérieur et à l'extérieur avec quelque chose comme ceci:

string filename = @"C:\Temp\junk.txt"; 
string tempfile = @"C:\Temp\junk_temp.txt"; 

using (StreamReader reader = new StreamReader(filename)) 
{     
    using (StreamWriter writer = new StreamWriter(tempfile)) 
    { 
     string line = reader.ReadLine(); 

     while (!reader.EndOfStream) 
     { 
      writer.WriteLine(line); 
      line = reader.ReadLine(); 
     } // by reading ahead, will not write last line to file 
    } 
} 

File.Delete(filename); 
File.Move(tempfile, filename); 
+0

Fonctionne très bien. Merci beaucoup! – fraXis

3

Pour les petits fichiers, un moyen facile (bien que loin d'être le plus efficace) serait:

string[] lines = File.ReadAllLines(fileName); 
Array.Resize(ref lines, lines.length - 1); 
File.WriteAllLines(fileName, lines); 
+0

+1 beaucoup plus propre que la mienne! – sshow

Questions connexes