예제 #1
0
        private bool AddFiles(List <string> aFiles, bool nested, Dictionary <string, ArchiveItem> seen, PartFileConsumer consumer)
        {
            var added = false;
            var files = aFiles.ToArray();

            foreach (string file in files)
            {
                try {
                    var info = new FileInfo(file);
                    if (!info.Exists)
                    {
                        continue;
                    }
                    if ((info.Attributes & FileAttributes.Directory) == FileAttributes.Directory)
                    {
                        continue;
                    }

                    if (consumer.Consume(info))
                    {
                        aFiles.Remove(file);
                        continue;
                    }

                    var ext = info.Extension.ToUpperInvariant();
                    if (seen.ContainsKey(info.FullName.ToUpperInvariant()))
                    {
                        continue;
                    }

                    ArchiveItem item = CreateItem(nested, info, ext);
                    if (item == null)
                    {
                        continue;
                    }
                    seen[info.FullName.ToUpperInvariant()] = item;
                    added = true;
                    Files.Items.Add(item);
                }
                catch (Exception ex) {
                    Console.Error.WriteLine(ex);
                }
            }
            return(added);
        }