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); } } }