private IEnumerable<string> ExtractFiles(Archive archive) { Console.WriteLine("Found archive: {0}", archive.Name); var createdEntries = new List<string>(); try { var reader = archive.CreateReader(); while (reader.MoveToNextEntry()) { if (File.Exists(Path.Combine(archive.Directory.FullName, reader.Entry.Key))) continue; reader.WriteEntryToDirectory(archive.Directory.FullName, ExtractOptions.Overwrite | ExtractOptions.ExtractFullPath); createdEntries.Add(reader.Entry.Key); } } catch (Exception e) { Console.WriteLine("Problem extracting from {0}: {1}", archive.Name, e); } return createdEntries; }
private static void AddFileToArchive(Dictionary<string, Archive> archives, string name, FileInfo file) { Archive archive; if (!archives.TryGetValue(name, out archive)) { archive = new Archive(name, file.Directory); archives[name] = archive; } archive.AddFile(file); }