对另一个包装器的基流进行包装会导致数据丢失吗

本文关键字:包装 数据 另一个 | 更新日期: 2023-09-27 17:57:56

有一个代码:

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

对另一个包装器的基流进行包装会导致数据丢失吗

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