Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }