首页 > 解决方案 > 如何从 .NET 中的 txt 文件的开头删除 n 个字符?

问题描述

我知道您可以通过 File.WriteAllText 或类似函数覆盖整个文件内容来做到这一点。但它似乎不是在开始时删除几个字符的有效方法,特别是如果文本文件包含超过数百万个字符。

有没有办法使用一些 FileStream /其他 Stream 类函数来做到这一点?

标签: c#.net.net-coref#stream

解决方案


根据需要,您可以执行 Seek() 然后 CopyTo() 到一个新的流。

using (FileStream fs1 = new FileStream(FileName1, FileMode.Open, FileAccess.Read))
{ 
    fs1.Seek(N, SeekOrigin.Begin); // N - number of characters from the beginning
    using (FileStream fs2 = File.Create(FileName2))
        fileStream1.CopyTo(fs2);
}

要删除第一行,请执行

var lines = File.ReadAllLines(FileName1);
File.WriteAllLines(FileName2, lines.Skip(N).ToArray());

推荐阅读