如何检查StreamReader是否仍处于打开状态?

时间:2015-04-20 14:36:13

标签: c#

我尝试使用一些额外的方法和属性在类StreamReader中“包裹”Fichier

我想要两件事:

  • StreamReader类会自动打开Fichier;
  • 当我们使用覆盖方法StreamReader时,ReadLine会打开,而不是之前(我们需要在使用StreamReader阅读之前修改文件)。

我的代码看起来像这样:

public string ReadLine()
{
    if (Reader == null || ???)
    {
        Reader = new StreamReader(Path);
    }
    return Reader.ReadLine();
}

???,我想检查StreamReader是否已关闭。的确,如果我们这样做:

StreamReader sr = new StreamReader(path);
sr.Close();

sr不是null,但如何检查它是否已关闭,以及如何重新打开它?

如果你想知道我为什么需要打开和关闭StreamReader,那是因为Fichier对象需要随时存在,但它所代表的文件需要在外部程序中多次修改

4 个答案:

答案 0 :(得分:9)

最简单的事情是Dispose(你真的应该这样做,它也关闭了流)它并在关闭它时将其设置为null

您可以选择检查EndOfStream,但这需要您阅读流的末尾。

答案 1 :(得分:3)

关闭阅读器时,只需将引用设置为null:

sr.Close();
sr = null;

没有理由坚持使用流阅读器,因为您无法重新打开它。你必须创建一个新的来获得一个开放的流阅读器。

答案 2 :(得分:2)

没有公开的方法来检查流/阅读器是否已关闭。关闭它后,只需将reader设置为null:

 Reader.Close();
 reader = null;

或保持单独的旗帜。

答案 3 :(得分:2)

如果StreamReader.Close()标记设置为leaveOpen,则

false会执行大量操作,如果是这种情况,则可以检查StreamReader.BaseStream是否为{{1} }}

null

输出:

  

     

     

按任意键继续。 。