我尝试使用一些额外的方法和属性在类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
对象需要随时存在,但它所代表的文件需要在外部程序中多次修改
答案 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
输出:
假
真
按任意键继续。 。