C#中的Streams问题

use*_*030 1 .net c#

我有这个代码用于c#读取TestFile.txt中的所有行但是当我读完时我想再读它然后把它放在一个字符串数组(不是List)中但是当我尝试再做一次时它说的是文件已被使用.我想重置流或执行类似sr.Close()的操作,因为我第一次读它时想要计算Testfile.txt中有多少行.

using (StreamReader sr = new StreamReader("TestFile.txt"))
{
           string line;
           while ((line = sr.ReadLine()) != null)
           {
                     Console.WriteLine(line);
           }
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试在while循环之后放置if(line == null)sr.Close()但它不起作用.

Jon*_*eet 9

为什么不把它读成a List<string>然后从中构建一个数组呢?或者更简单地说,只需致电File.ReadAllLines:

string[] lines = File.ReadAllLines("TestFile.txt");
Run Code Online (Sandbox Code Playgroud)

虽然您可以重置底层流并刷新阅读器中的缓冲区,但我不会这样做 - 我只是以一种不需要您预先知道大小的方式阅读它.

(事实上​​,我尝试使用a List<string>而不是string[]反正 - 使用它们通常更令人愉快.阅读Eric Lippert关于该主题的博客文章以获取更多信息.)

  • 我完全同意这一点。在乔恩击败我之前,我实际上正在输入一些非常相似的东西(该死的这个社区很快)。 (2认同)
  • 你会一大早就起床打败乔恩:http://meta.stackexchange.com/questions/9134/jon-skeet-facts (2认同)