我有这段 C# 代码可以读取 TestFile.txt 中的所有行,但是当我读完后我想再次读取它然后将它放入一个字符串数组(而不是列表)中但是当我再次尝试这样做时它说该文件已在使用中。我想重置流或执行类似 sr.Close() 的操作,因为我第一次阅读它时想计算 Testfile.txt 中有多少行。
using (StreamReader sr = new StreamReader("TestFile.txt"))
{
string line;
while ((line = sr.ReadLine()) != null)
{
Console.WriteLine(line);
}
}
我已经尝试在 while 循环之后放置 if(line == null) sr.Close() 但它不起作用。
最佳答案
为什么不把它读入 List<string>
然后从中构建一个数组?或者更简单,只需调用 File.ReadAllLines
:
string[] lines = File.ReadAllLines("TestFile.txt");
虽然您可以重置底层流并刷新读取器中的缓冲区,但我不会这样做 - 我只是以不需要您的方式全部读取一次预先知道尺寸。
(事实上,我会尝试使用 List<string>
而不是 string[]
无论如何 - 它们通常使用起来更愉快。阅读 Eric Lippert's blog post on the subject 了解更多信息。)
关于c# - C# 中的流问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8623906/