不读取文本文件的第一行,直接删除它。

6

我正在处理一个非常大的文本文件(约7万行),我想删除顶部的行。

很明显,将整个文件加载到内存中,删除顶部的行,然后再次将整个文件重写是低效的:

var lines = File.ReadLines(accountFileLocation.Text).Skip(1);
File.WriteAllLines("output.txt", lines);

有其他的方法吗?

你必须删除它吗?用空格覆盖它怎么样?70000行似乎不算太多。我会将其更改为约7万亿行以产生影响。 - MxLDevs
我认为没有不经过文件完整遍历的方法。但是实现不应该一次性将整个文件加载到内存中。它只会在进行枚举时逐步加载。在你的情况下,性能是否有问题?上面的实现需要多长时间? - Baldrick
我认为应该使用while循环。在while循环之前,执行readline()以跳过第一行。然后在while循环内部,同时读取和写入行。而且似乎我的想法也在“Jon Skeet说:不是真的”中被讨论过。 - jhyap
2
可能是如何在C#中从文本文件中删除一行?的重复问题。 - Noctis
@Keikoku:类似这样的东西吗?绝对不值得这么折磨:https://dev59.com/YmYr5IYBdhLWcg3wvspA - Baldrick
显示剩余4条评论
1个回答

1

嘿嘿... 终于可以说Jon Skeet说了 :)

Jon Skeet 说: 不是真的

你做的是一种方法。 第二种方法将需要打开读取流和写入流(到另一个文件),然后读取行,如果您想要它,则将其写入写入流(更适用于“测试行有效性”的情况,而不是除第一行外的所有行)。

所以...看起来你得到了正确的答案...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接