示例#1
0
        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;
        }
示例#2
0
        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);
        }