File.ReadLines“无法从已关闭的TextReader中读取”

时间:2016-04-22 06:48:49

标签: c# file readline

我得到了一个奇怪的例外,我不确定是什么原因导致的。在我使用本地机器时:

var lines = File.ReadLines("filePath");
foreach(string line in lines)...

这完美没有任何问题。代码位于.NetFramework 4.5构建的项目中。该dll是从.NetFramework 4.0池上托管的网站引用的。

一旦我将我的工作上传到主机并开始使用它,代码中使用File.ReadLines的所有实例都会引发异常。我用File.ReadAllLines替换了代码并且它有效。

我已经阅读了很多关于此的问题,但我不认为他们中的任何一个都能解释为什么会这样。它可能是.NetFramework版本还是别的什么?

2 个答案:

答案 0 :(得分:3)

请注意,ReadLines只允许您遍历行一次,在该方法下执行与此类似的操作:

private IENumerable<string> ReadLine(string path)
{
    var file = OpenFile(path);
    while (file.Read())
    {
        yield return file.GetLine();
    }
    file.Close();
}

这意味着文件处于打开状态,直到您完成IEnumerable的交互,并在您到达结尾时立即关闭。也许你可以更简单地调用ReadAllLines,它返回一个很好的旧字符串[],让你随意迭代它。

答案 1 :(得分:1)

.NET Framework 4.0引入了

ReadLine方法,而.NET Framework 2.0引入了ReadAllLines。所以,问题可能是.NET版本。