为了账号安全,请及时绑定邮箱和手机立即绑定

如何用C#中的迭代器反向读取文本文件

如何用C#中的迭代器反向读取文本文件

繁花不似锦 2019-06-23 17:15:26
如何用C#中的迭代器反向读取文本文件我需要处理一个大文件,大约400 K行和200米,但有时我必须处理自下而上。如何在这里使用迭代器(收益率返回)?基本上我不喜欢把所有的东西都载入内存。我知道在.NET中使用迭代器更有效。
查看完整描述

3 回答

?
ibeautiful

TA贡献1993条经验 获得超5个赞

您可以使用File.Readline获取行迭代器

foreach (var line in File.ReadLines(@"C:\temp\ReverseRead.txt").Reverse()){
    if (noNeedToReadFurther)
        break;

    // process line here
    Console.WriteLine(line);}

编辑:

阅读后苹果01的评论,我运行了一些测试看起来像 .Reverse()实际上加载了整个文件。

我用File.ReadLines()打印第一行控制台应用程序的40 MB文件内存使用情况是5MB..然后,用File.ReadLines().Reverse()打印最后一行相同的文件内存使用情况是95 MB.

结语

不管“反向()”做什么,这不是个好选择用于读取大文件的底部。


查看完整回答
反对 回复 2019-06-23
  • 3 回答
  • 0 关注
  • 737 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信