[英]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 应保持打开状态以供进一步使用。
它完全按照它所说的那样做,当leaveOpen
为false
(默认值)时,它会在释放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.