繁体   English   中英

C# GZipStream 离开打开标志

[英]C# GZipStream leaveOpen flag

public GZipStream (System.IO.Stream stream, 
                   System.IO.Compression.CompressionMode mode, 
                   bool leaveOpen);

我试图了解 leaveOpen 标志的作用。 什么时候应该设置为真或假?

这是定义:leaveOpen:

true 在处理完 GZipStream object 后让 stream 保持打开状态; 否则为假。

In the .NET world several type of Stream s wrap another Stream to add kind of a new layer of logic , like compression/decompression, encryption, etc. In these cases, the stream gets another stream most likely as a constructor argument, like in your例子。 按照惯例(我猜..),当包装器Stream被处置时,被包装的Stream也将被处置,或者换句话说被关闭

标志leaveOpen意味着当包装器 stream 关闭(处置)时,底层(包装) stream 应保持打开状态以供进一步使用。

它完全按照它所说的那样做,当leaveOpenfalse (默认值)时,它会在释放GZipStream实例时释放您作为第一个参数传递的 stream。

根据您初始化流的方式,您不希望像我通常的编码模式那样多次处理对象:

using var memoryStream = new MemoryStream();
using var fileStream = File.OpenRead(Path.Combine(repositoryPath, file));
using var gZipStream = new GZipStream(memoryStream, CompressionMode.Compress, true);
fileStream.CopyTo(gZipStream);
                    

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM