【问题标题】:Can wrapping of base stream of another wrapper lead to data loss?包装另一个包装器的基本流会导致数据丢失吗?
【发布时间】:2014-05-24 11:09:49
【问题描述】:

有一个代码:

using (var sw1 = new StreamWriter(filename))
{
    var sw2 = new StreamWriter(sw1.base as FileStream);
    while (...)
       sw2.WriteLine(...); //a lot of lines are written
}

如果不显式刷新 sw2,它会丢失一些数据吗? 根据 MSDN(我记得)内部流不应该直接处理,这就是为什么我也没有通过using 覆盖 sw2。

为什么我需要 sw1?因为这只是一个例子,我的项目中也有同样的情况,因为它的架构(sw1 是由一个带有 sw2 的函数创建的,由于接口的原因应该作为FileStream 传递)。

【问题讨论】:

    标签: c# stream filestream streamwriter flush


    【解决方案1】:

    显然,是的,它可以。为防止数据丢失,应在继续写入 sw1 之前刷新 sw2。 sw1 处理后也不能使用 sw2。

    【讨论】:

      猜你喜欢
      • 2018-12-20
      • 2011-10-17
      • 1970-01-01
      • 2021-10-18
      • 1970-01-01
      • 2013-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多