【问题标题】:readline then move the pointer back?readline 然后将指针移回?
【发布时间】:2013-12-20 00:56:09
【问题描述】:

streamreader 中是否有一个函数允许查看/读取下一行以获取更多信息,而无需实际将迭代器移动到下一个位置?

当前行的动作取决于下一行,但我想保持使用这个代码块的完整性

while((Line = sr.ReadLine())!=null)

【问题讨论】:

  • 有什么理由不将整个文件读入内存并在那里使用它?尺寸是不是太大了?
  • @Yuck,对,文件太大,无法加载到内存中
  • 一次读取两行代码如何?您是否需要只知道下一行或更多内容?

标签: c# file-io readline


【解决方案1】:

原则上没有必要做这样的事情。如果您想关联两行连续的行,只需根据这一事实调整分析(在阅读第 2 行时执行第 1 行的操作)。示例代码:

using (System.IO.StreamReader sr = new System.IO.StreamReader("path"))
{
    string line = null;
    string prevLine = null;
    while ((line = sr.ReadLine()) != null)
    {
        if (prevLine != null)
        {
            //perform all the actions you wish with the previous line now
        }

        prevLine = line;
    }
}

这可能会根据需要处理尽可能多的行(以前行的集合,而不仅仅是 prevLine)。

【讨论】:

  • 谢谢。我目前正在使用与您完全相同的方式(甚至变量名也意外相同:)),只是想知道是否还有其他更好的方法。
  • @Yang(我选择了一个好名字,然后:))如果一切正常,为什么要改变它?我经常使用这种方法,从来没有遇到过问题:它可靠、清晰、快速。
  • @Yang 我同意这一点。我推测这是最常见的方法。事实上,我花了几分钟寻找一些合理的方法来使用StreamReader 方法,但找不到任何有用的东西。
猜你喜欢
  • 1970-01-01
  • 2022-01-07
  • 1970-01-01
  • 2011-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多