我得到了一个奇怪的例外,我不确定是什么原因导致的。在我使用本地机器时:
var lines = File.ReadLines("filePath");
foreach(string line in lines)...
这完美没有任何问题。代码位于.NetFramework 4.5构建的项目中。该dll是从.NetFramework 4.0池上托管的网站引用的。
一旦我将我的工作上传到主机并开始使用它,代码中使用File.ReadLines
的所有实例都会引发异常。我用File.ReadAllLines
替换了代码并且它有效。
我已经阅读了很多关于此的问题,但我不认为他们中的任何一个都能解释为什么会这样。它可能是.NetFramework版本还是别的什么?
答案 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)
ReadLine
方法,而.NET Framework 2.0引入了ReadAllLines
。所以,问题可能是.NET版本。