如何关闭StreamReader / StreamWriter流对象作为类成员?

时间:2017-08-04 03:28:44

标签: c# streamreader streamwriter

如果我有一个类文件流成员,那么:

public class FooBar
{
    private StreamReader reader;
    private StreamWriter writer;

    public FooBar(string readerFilePath, string writerFilePath)
    {
        reader = new StreamReader(readerFilePath);
        writer = new StreamWriter(writerFilePath);
    }

    ...
}

然后如何关闭这些流?

似乎它们在课堂销毁期间默认关闭,但后来我必须使用听起来不错的writer.Flush()

1 个答案:

答案 0 :(得分:0)

使用块

using(reader = new StreamReader(readerFilePath))
{
  //your code
}

从以下链接:  提供方便的语法,确保正确使用IDisposable对象。

  

来自MSDN:

     

C#,通过.NET Framework公共语言运行库(CLR),   自动释放用于存储no的对象的内存   需要更长时间记忆的释放是不确定的;记忆是   CLR决定执行垃圾收集时释放。   但是,通常最好释放有限的资源,例如文件   尽快处理和网络连接。

     

using语句允许程序员指定对象的时间   使用资源应该释放它们。提供给使用的对象   语句必须实现IDisposable接口。这个界面   提供Dispose方法,该方法应该释放对象   资源。换句话说,using语句告诉.NET发布   一旦不再需要,就在using块中指定的对象。

https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/using-statement

What is the C# Using block and why should I use it?