public async Task <IEnumerable <StorageFile> > GetRemoteFiles(Func <string, bool> filter = null, bool recursive = false) { if (filter == null) { filter = item => true; } var items = new List <StorageFile>(); var subItems = (await GetRemoteItems()).ToList(); if (recursive) { foreach (var subItem in subItems.Where(subItem => subItem.IsCollection)) { var subDirectory = new StorageDirectory(RelativePathParts.Merge(subItem.GetName())); items.AddRange(await subDirectory.GetRemoteFiles(filter, true)); } } items.AddRange(subItems .Where(item => !item.IsCollection && filter(item.GetName())) .Select(item => new StorageFile(RelativePathParts, item))); return(items); }
public IEnumerable <StorageDirectory> GetLocalFolders(Func <string, bool> filter = null) { if (filter == null) { filter = item => true; } var items = new List <StorageDirectory>(); items.AddRange(Directory.GetDirectories(LocalPath) .Where(directoryPath => filter(Path.GetFileName(directoryPath))) .Select(directoryPath => new StorageDirectory(RelativePathParts.Merge(Path.GetFileName(directoryPath))))); return(items); }
public async Task <IEnumerable <StorageDirectory> > GetRemoteFolders(Func <string, bool> filter) { var items = await GetRemoteItems(item => item.IsCollection); return(items .Where(item => filter(item.GetName())) .Select(item => { var directory = new StorageDirectory(RelativePathParts.Merge(item.GetName())); if (!Directory.Exists(directory.LocalPath)) { Directory.CreateDirectory(directory.LocalPath); } return directory; }) .ToList()); }
public IEnumerable <StorageFile> GetLocalFiles(Func <string, bool> filter = null, bool recursive = false) { if (filter == null) { filter = item => true; } var items = new List <StorageFile>(); if (recursive) { foreach (var directoryPath in Directory.GetDirectories(LocalPath)) { var subDirectory = new StorageDirectory(RelativePathParts.Merge(Path.GetFileName(directoryPath))); items.AddRange(subDirectory.GetLocalFiles(filter, true)); } } items.AddRange(Directory.GetFiles(LocalPath) .Where(filePath => filter(Path.GetFileName(filePath))) .Select(filePath => new StorageFile(RelativePathParts.Merge(Path.GetFileName(filePath))))); return(items); }