private List <DirectoryIndexEntry> FilterEntries(IEnumerable <DirectoryIndexEntry> entriesIter) { List <DirectoryIndexEntry> entries = new List <DirectoryIndexEntry>(entriesIter); // Weed out short-name entries for files and any hidden / system / metadata files. int i = 0; while (i < entries.Count) { DirectoryIndexEntry entry = entries[i]; if (((entry.Key.Flags & FileAttributeFlags.Hidden) != 0) && _context.Options.HideHiddenFiles) { entries.RemoveAt(i); } else if (((entry.Key.Flags & FileAttributeFlags.System) != 0) && _context.Options.HideSystemFiles) { entries.RemoveAt(i); } else if (entry.Value.MftIndex < 24 && _context.Options.HideMetafiles) { entries.RemoveAt(i); } else if (entry.Key.FileNameNamespace == FileNameNamespace.Dos && _context.Options.HideDosFileNames) { entries.RemoveAt(i); } else { ++i; } } return(entries); }
internal DirectoryEntry GetEntryByName(string name) { string searchName = name; int streamSepPos = name.IndexOf(':'); if (streamSepPos >= 0) { searchName = name.Substring(0, streamSepPos); } DirectoryIndexEntry entry = Index.FindFirst(new FileNameQuery(searchName, _context.UpperCase)); if (entry.Key != null) { return(new DirectoryEntry(this, entry.Value, entry.Key)); } return(null); }