| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 | using MediaBrowser.Model.IO;using SharpCompress.Archive.SevenZip;using SharpCompress.Common;using SharpCompress.Reader;using System.IO;namespace MediaBrowser.Common.Implementations.Archiving{    /// <summary>    /// Class DotNetZipClient    /// </summary>    public class ZipClient : IZipClient    {        /// <summary>        /// Extracts all.        /// </summary>        /// <param name="sourceFile">The source file.</param>        /// <param name="targetPath">The target path.</param>        /// <param name="overwriteExistingFiles">if set to <c>true</c> [overwrite existing files].</param>        public void ExtractAll(string sourceFile, string targetPath, bool overwriteExistingFiles)        {            using (var fileStream = File.OpenRead(sourceFile))            {                ExtractAll(fileStream, targetPath, overwriteExistingFiles);            }        }        /// <summary>        /// Extracts all.        /// </summary>        /// <param name="source">The source.</param>        /// <param name="targetPath">The target path.</param>        /// <param name="overwriteExistingFiles">if set to <c>true</c> [overwrite existing files].</param>        public void ExtractAll(Stream source, string targetPath, bool overwriteExistingFiles)        {            using (var reader = ReaderFactory.Open(source))            {                var options = ExtractOptions.ExtractFullPath;                if (overwriteExistingFiles)                {                    options = options | ExtractOptions.Overwrite;                }                reader.WriteAllToDirectory(targetPath, options);            }        }        /// <summary>        /// Extracts all from7z.        /// </summary>        /// <param name="sourceFile">The source file.</param>        /// <param name="targetPath">The target path.</param>        /// <param name="overwriteExistingFiles">if set to <c>true</c> [overwrite existing files].</param>        public void ExtractAllFrom7z(string sourceFile, string targetPath, bool overwriteExistingFiles)        {            using (var fileStream = File.OpenRead(sourceFile))            {                ExtractAllFrom7z(fileStream, targetPath, overwriteExistingFiles);            }        }        /// <summary>        /// Extracts all from7z.        /// </summary>        /// <param name="source">The source.</param>        /// <param name="targetPath">The target path.</param>        /// <param name="overwriteExistingFiles">if set to <c>true</c> [overwrite existing files].</param>        public void ExtractAllFrom7z(Stream source, string targetPath, bool overwriteExistingFiles)        {            using (var archive = SevenZipArchive.Open(source))            {                using (var reader = archive.ExtractAllEntries())                {                    var options = ExtractOptions.ExtractFullPath;                    if (overwriteExistingFiles)                    {                        options = options | ExtractOptions.Overwrite;                    }                    reader.WriteAllToDirectory(targetPath, options);                }            }        }    }}
 |