我目前可以使用以下方法删除文本文件的最后一行:
var lines = System.IO.File.ReadAllLines("test.txt");
System.IO.File.WriteAllLines("test.txt", lines.Take(lines.Length - 1).ToArray());
但是,如何才能删除文本文件的开头呢?
最佳答案
您可以使用 lines.Skip
而不是 lines.Take
,例如:
var lines = File.ReadAllLines("test.txt");
File.WriteAllLines("test.txt", lines.Skip(1).ToArray());
尽管使用的技术(读取所有文本并写回所有内容)效率非常低,但仍要在开头截断。
关于高效的方式:低效来自于必须将整个文件读入内存。另一种方法很容易是在流中查找并将流复制到另一个输出文件,删除原始文件,然后重命名旧文件。那个速度同样快,但消耗的内存要少得多。
在末尾截断文件要容易得多。您可以找到截断位置并调用 FileStream.SetLength()
。
关于c# - 在 C# 中删除文本文件的第一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7008542/