为什么StreamWriter不能访问已关闭的流,而StreamReader可以

本文关键字:StreamReader 可以 不能 StreamWriter 访问 为什么 | 更新日期: 2023-09-27 18:01:34

如果我写以下语句:

fileStream.Close();
reader.Close();
writer.Close();

reader.Close()语句执行成功。但是在第三条语句writer.Close()

上得到错误" cannot open closed file."

如果我写

fileStream.Close();
writer.Close();
reader.Close();

第二条语句即writer.Close()本身抛出同样的异常。

有人知道吗?

为什么StreamWriter不能访问已关闭的流,而StreamReader可以

我认为这是因为writer在关闭底层流之前调用了flush()。

我不得不猜测你的代码看起来像这样:

FileStream fileStream = new FileStream(...);
StreamWriter writer = new StreamWriter(fileStream);
...

不要关闭fileStream,流写入器现在"拥有"这个流。关闭它也会关闭文件流。