コード例 #1
0
 protected override void Dispose(bool disposing)
 {
     try
     {
         PurgeBuffers(disposing);
     }
     finally
     {
         // Close the underlying stream even if PurgeBuffers threw.
         // Stream.Close() may throw here (may or may not be due to the same error).
         // In this case, we still need to clean up internal resources, hence the inner finally blocks.
         try
         {
             if (disposing && _stream != null)
             {
                 _stream.Dispose();
             }
         }
         finally
         {
             _stream   = null !;
             _inflater = null !;
             base.Dispose(disposing);
         }
     }
 }
コード例 #2
0
        /// <summary>
        /// Sets up this DeflateManagedStream to be used for Inflation/Decompression
        /// </summary>
        internal void InitializeInflater(Stream stream, bool leaveOpen, IFileFormatReader reader = null, ZipArchiveEntry.CompressionMethodValues method = ZipArchiveEntry.CompressionMethodValues.Deflate, long uncompressedSize = -1)
        {
            Debug.Assert(stream != null);
            Debug.Assert(method == ZipArchiveEntry.CompressionMethodValues.Deflate64);
            if (!stream.CanRead)
            {
                throw new ArgumentException(SR.NotSupported_UnreadableStream, nameof(stream));
            }

            _inflater = new InflaterManaged(reader, method == ZipArchiveEntry.CompressionMethodValues.Deflate64 ? true : false, uncompressedSize);

            _stream    = stream;
            _leaveOpen = leaveOpen;
            _buffer    = new byte[DefaultBufferSize];
        }
コード例 #3
0
        // A specific constructor to allow decompression of Deflate64
        internal DeflateManagedStream(Stream stream, ZipArchiveEntry.CompressionMethodValues method, long uncompressedSize = -1)
        {
            ArgumentNullException.ThrowIfNull(stream);

            if (!stream.CanRead)
            {
                throw new ArgumentException(SR.NotSupported_UnreadableStream, nameof(stream));
            }

            Debug.Assert(method == ZipArchiveEntry.CompressionMethodValues.Deflate64);

            _inflater = new InflaterManaged(method == ZipArchiveEntry.CompressionMethodValues.Deflate64, uncompressedSize);

            _stream = stream;
            _buffer = new byte[DefaultBufferSize];
        }
コード例 #4
0
ファイル: DeflateManagedStream.cs プロジェクト: dotnet/corefx
        /// <summary>
        /// Sets up this DeflateManagedStream to be used for Inflation/Decompression
        /// </summary>
        internal void InitializeInflater(Stream stream, bool leaveOpen, IFileFormatReader reader = null, ZipArchiveEntry.CompressionMethodValues method = ZipArchiveEntry.CompressionMethodValues.Deflate)
        {
            Debug.Assert(stream != null);
            Debug.Assert(method == ZipArchiveEntry.CompressionMethodValues.Deflate || method == ZipArchiveEntry.CompressionMethodValues.Deflate64);
            if (!stream.CanRead)
                throw new ArgumentException(SR.NotSupported_UnreadableStream, nameof(stream));

            _inflater = new InflaterManaged(reader, method == ZipArchiveEntry.CompressionMethodValues.Deflate64 ? true : false);

            _stream = stream;
            _mode = CompressionMode.Decompress;
            _leaveOpen = leaveOpen;
            _buffer = new byte[DefaultBufferSize];
        }
コード例 #5
0
ファイル: DeflateManagedStream.cs プロジェクト: dotnet/corefx
        protected override void Dispose(bool disposing)
        {
            try
            {
                PurgeBuffers(disposing);
            }
            finally
            {
                // Close the underlying stream even if PurgeBuffers threw.
                // Stream.Close() may throw here (may or may not be due to the same error).
                // In this case, we still need to clean up internal resources, hence the inner finally blocks.
                try
                {
                    if (disposing && !_leaveOpen && _stream != null)
                        _stream.Dispose();
                }
                finally
                {
                    _stream = null;

                    try
                    {
                        if (_deflater != null)
                            _deflater.Dispose();
                        if (_inflater != null)
                            _inflater.Dispose();
                    }
                    finally
                    {
                        _deflater = null;
                        _inflater = null;
                        base.Dispose(disposing);
                    }
                }
            }
        }