包装另一个包装器的基本流会导致数据丢失吗?

时间:2014-04-10 16:02:36

标签: c# stream filestream streamwriter flush

有一个代码:

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传递)。

1 个答案:

答案 0 :(得分:0)

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