public IEnumerable <FsFileStatusPage> ListFilesPaged(FsPath path, FileListParameters parameters) { int count = 0; string after = null; while (true) { var result = RestClients.FileSystemClient.FileSystem.ListFileStatus(this.Account.Name, path.ToString(), parameters.PageSize, after); if (result.FileStatuses.FileStatus.Count > 0) { var childitems = result.FileStatuses.FileStatus.Select(i => new FsFileStatus(i)).ToList(); var page = new FsFileStatusPage(path, childitems); yield return(page); count += page.FileItems.Count; if (parameters.Top > 0 && count >= parameters.Top) { break; } after = result.FileStatuses.FileStatus[result.FileStatuses.FileStatus.Count - 1].PathSuffix; } else { break; } } }
public IEnumerable <FsPathAndFileStatusPair> ListFiles(FsPath path, FileListParameters parameters) { foreach (var page in ListFilesPaged(path, parameters)) { foreach (var filestatus in page.FileItems) { var item = new FsPathAndFileStatusPair(page.Path, filestatus); yield return(item); } } }
public void List_Files_Recursive() { this.Initialize(); int page_count = 0; int child_count = 0; var lfo = new FileListParameters(); lfo.PageSize = 4; var folder = new FsPath("/test_adl_demo_client/List_Files_Recursive"); if (StoreClient.FileSystem.FolderExists(folder)) { StoreClient.FileSystem.Delete(folder, true); } var bytes = new byte[0]; var fcp = new AdlClient.Models.FileCreateParameters(); StoreClient.FileSystem.Create(folder.Append("f1"), bytes, fcp); StoreClient.FileSystem.Create(folder.Append("f2"), bytes, fcp); StoreClient.FileSystem.Create(folder.Append("a/f3"), bytes, fcp); StoreClient.FileSystem.Create(folder.Append("a/f4"), bytes, fcp); StoreClient.FileSystem.Create(folder.Append("a/b/f5"), bytes, fcp); StoreClient.FileSystem.Create(folder.Append("a/b/f6"), bytes, fcp); StoreClient.FileSystem.CreateDirectory(folder.Append("b")); var rlfo = new FileListRecursiveParameters(); rlfo.PageSize = 4; var pages = this.StoreClient.FileSystem.ListFilesRecursivePaged(folder, rlfo); foreach (var page in pages) { foreach (var child in page.FileItems) { child_count++; } page_count++; } Assert.AreEqual(3, page_count); Assert.AreEqual(9, child_count); }
public void List_Files_Non_Recursive() { this.Initialize(); int page_count = 0; int child_count = 0; var lfo = new FileListParameters(); lfo.PageSize = 4; var pages = this.StoreClient.FileSystem.ListFilesPaged(FsPath.Root, lfo); foreach (var page in pages) { foreach (var fileitem in page.FileItems) { child_count++; } page_count++; } }
public IEnumerable <FsFileStatusPage> ListFilesRecursivePaged(FsPath path, FileListRecursiveParameters parameters) { var queue = new Queue <FsPath>(); queue.Enqueue(path); var flp = new FileListParameters(); flp.PageSize = parameters.PageSize; flp.Top = 0; int count = 0; while (queue.Count > 0) { FsPath cur_path = queue.Dequeue(); foreach (var page in ListFilesPaged(cur_path, flp)) { yield return(page); count += page.FileItems.Count; if (parameters.Top > 0 && count >= parameters.Top) { break; } foreach (var item in page.FileItems) { if (item.Type == MSADLS.Models.FileType.DIRECTORY) { var new_path = cur_path.Append(item.PathSuffix); queue.Enqueue(new_path); } } } } }