File.ReadLines "Can't Read From Closed TextReader"
File.ReadLines "Can't Read From Closed TextReader"
我收到一个奇怪的异常,我不确定是什么原因造成的。在我使用的本地机器上:
var lines = File.ReadLines("filePath");
foreach(string line in lines)...
这完美地工作,没有任何问题。该代码位于基于 .NetFramework 4.5 构建的项目中。该 dll 是从托管在 .NetFramework 4.0 池上的网站引用的。
一旦我将我的作品上传到主机并开始使用它,代码中使用 File.ReadLines
的所有实例都会抛出异常。我用 File.ReadAllLines
替换了代码,它起作用了。
我已经阅读了很多关于此的问题,但我认为没有任何人回答为什么会发生这种情况。可能是 .NetFramework 版本还是其他版本?
ReadLine
方法是在 .NET Framework 4.0 中引入的,而 ReadAllLines
是在 .NET Framework 2.0 中引入的。所以,问题可能出在 .NET 版本上。
请注意,ReadLines 只允许您遍历行一次,在幕后,该方法执行类似于此的操作:
private IENumerable<string> ReadLine(string path)
{
var file = OpenFile(path);
while (file.Read())
{
yield return file.GetLine();
}
file.Close();
}
这意味着文件一直打开,直到您完成对 IEnumerable 的交互,并在到达末尾时立即关闭。也许您调用 ReadAllLines 会更简单,它 returns 一个很好的旧字符串 [] 让您可以随意遍历它。
我收到一个奇怪的异常,我不确定是什么原因造成的。在我使用的本地机器上:
var lines = File.ReadLines("filePath");
foreach(string line in lines)...
这完美地工作,没有任何问题。该代码位于基于 .NetFramework 4.5 构建的项目中。该 dll 是从托管在 .NetFramework 4.0 池上的网站引用的。
一旦我将我的作品上传到主机并开始使用它,代码中使用 File.ReadLines
的所有实例都会抛出异常。我用 File.ReadAllLines
替换了代码,它起作用了。
我已经阅读了很多关于此的问题,但我认为没有任何人回答为什么会发生这种情况。可能是 .NetFramework 版本还是其他版本?
ReadLine
方法是在 .NET Framework 4.0 中引入的,而 ReadAllLines
是在 .NET Framework 2.0 中引入的。所以,问题可能出在 .NET 版本上。
请注意,ReadLines 只允许您遍历行一次,在幕后,该方法执行类似于此的操作:
private IENumerable<string> ReadLine(string path)
{
var file = OpenFile(path);
while (file.Read())
{
yield return file.GetLine();
}
file.Close();
}
这意味着文件一直打开,直到您完成对 IEnumerable 的交互,并在到达末尾时立即关闭。也许您调用 ReadAllLines 会更简单,它 returns 一个很好的旧字符串 [] 让您可以随意遍历它。