2010-05-20 50 views
3

我需要從文本文件中刪除最後一行。我知道如何在C#中打開和保存文本文件,但是如何去掉文本文件的最後一行?從文本文件中刪除最後一行

該文本文件將始終是不同的大小(有些有80行,有些有20)。

有人可以告訴我如何做到這一點?

謝謝。

回答

4

用小的行數,你可以很容易地使用類似這樣

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

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

但是,隨着文件越來越大,您可能需要將數據流入和流出,如下所示:

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

工程很棒。非常感謝! – fraXis 2010-05-22 00:01:21

3

對於小文件,一個簡單的方法(雖然談不上最有效的)是:

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

+1比我的整潔! – sshow 2010-05-20 22:29:02