c# - 在 C# 中删除文本文件的第一行

标签 c# .net windows

我目前可以使用以下方法删除文本文件的最后一行:

    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/

相关文章:

c# - 无法添加到csharp词典定义中,收到“对象引用未设置为实例…”

windows - 如何在 Windows 批处理脚本中获取可选的命令行参数值作为字符串?

windows - 如何测试 Windows 错误报告?

PHP stream_select 不起作用

c# - 如何使用 XML-RPC.NET 为方法定义可选参数

c# - 调用 tojson() 后创建 3 个 List<column>

c# - Singleton Alternative - 它是等价的吗?

c# - 如何在动态按钮上创建动态按钮单击事件?

c# - 将表单数据 NameValueCollection 转换为对象

c# - 巢状查询会传回奇怪的结果。 Elasticsearch