public IEnumerable <StreamAttributes> Enumerate(string underLogicalPath, EnumerateTypes types, bool recursive) { SearchOption searchOption = (recursive ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly); string underPath = PathCombineSandbox(underLogicalPath); if (Directory.Exists(underPath)) { DirectoryInfo underDir = new DirectoryInfo(underPath); if (types.HasFlag(EnumerateTypes.File)) { foreach (FileInfo file in underDir.EnumerateFiles("*.*", searchOption)) { yield return(Convert(file)); } } if (types.HasFlag(EnumerateTypes.Folder)) { foreach (DirectoryInfo folder in underDir.EnumerateDirectories("*.*", searchOption)) { yield return(Convert(folder)); } } } }
public IEnumerable <StreamAttributes> Enumerate(string underLogicalPath, EnumerateTypes types, bool recursive) { return(_enumerateCache.GetOrBuild($"{recursive}|{types}|{underLogicalPath}", null, () => { return _inner.Enumerate(underLogicalPath, types, recursive).ToList(); })); }
public IEnumerable <StreamAttributes> Enumerate(string underLogicalPath, EnumerateTypes types, bool recursive) { // Enumerate items but make them look like the unpacked zip files foreach (StreamAttributes item in _inner.Enumerate(underLogicalPath, types, recursive)) { if (item.Path.EndsWith(".zip")) { item.Path = item.Path.Substring(0, item.Path.Length - 4); } yield return(item); } }
public IEnumerable <StreamAttributes> Enumerate(string underLogicalPath, EnumerateTypes types, bool recursive) { // Track item paths we've already returned HashSet <string> pathsSeen = new HashSet <string>(StringComparer.OrdinalIgnoreCase); // Return all local items first foreach (StreamAttributes item in LocalProvider.Enumerate(underLogicalPath, types, recursive)) { pathsSeen.Add(item.Path); yield return(item); } // Return remote items which we didn't already return seeing locally foreach (StreamAttributes remoteItem in RemoteProvider.Enumerate(underLogicalPath, types, recursive)) { if (pathsSeen.Add(remoteItem.Path)) { yield return(remoteItem); } } }
public static void Main() { EnumerateTypes.Enumerate(); }