c# - C# 中的流问题

标签 c# .net

我有这段 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/

相关文章:

c# - 提取短语中的双引号项

c# - 将c#连接到SQL服务器的教程

c# - 使用具有多个参数的构造函数的依赖注入(inject)解析,这些参数的值在运行时确定 .NET Core 3

c# - 上下文菜单项的点击不触发

c# - .NET 框架中是否有针对不同 Web 方法类型(GET、PUT、POST、DELETE、HEAD)的常量?

c# - 在 C# 中使用 XMLWriter 创建大型 xml

c# - 从 C# LINQ 解析 XML 时如何保留空白字符

.net - ASP.NET MVC - 以编程方式添加 Action 过滤器

.net - 在 Delphi XE2 中使用 .NET 程序集

.net - 在 .NET 中,字符串初始化为 null 的基本原理是什么?