Пример #1
0
        private void ExtractToDirectory(string zipFilePath, string directory)
        {
            using (var unzip = Unzip.Open(zipFilePath, FileAccess.Read))
            {
                var zipEntries = unzip.ReadCentralDir();

                foreach (var entry in zipEntries)
                {
                    if (_unzipCancellationToken.IsCancellationRequested)
                    {
                        _unzipCancellationToken.ThrowIfCancellationRequested();
                    }

                    var filePath      = Path.Combine(directory, entry.FilenameInZip);
                    var fileDirectory = Path.GetDirectoryName(filePath);

                    if (null == fileDirectory)
                    {
                        throw new InvalidOperationException("null == fileDirectory");
                    }

                    if (!Directory.Exists(fileDirectory))
                    {
                        Directory.CreateDirectory(fileDirectory);
                    }

                    unzip.ExtractFile(entry, filePath);
                }
            }
        }