private async Task DownloadAdvanced(Directory directory, string toLocalPath) { labelAction.Text = "Downloading..."; labelContent.Text = directory.Path; bool rootDownload = directory.Path == BrickExplorer.ROOT_PATH; string localPath = (rootDownload) ? System.IO.Path.Combine(toLocalPath, Manager.Brick.Name) : System.IO.Path.Combine(toLocalPath, directory.Name); System.IO.Directory.CreateDirectory(localPath); File[] files = await BrickExplorer.GetFiles(directory.Path); foreach (File file in files) { labelContent.Text = file.Path; byte[] data = await file.Download(); if (data != null && data.Length > 0) { string filePath = System.IO.Path.Combine(localPath, file.FileName); using (System.IO.FileStream fs = new System.IO.FileStream(filePath, System.IO.FileMode.Create)) { fs.Write(data, 0, data.Length); } } } Directory[] subDirectories = await BrickExplorer.GetDirectories(directory.Path); foreach (Directory subDirectory in subDirectories) { await DownloadAdvanced(subDirectory, localPath); } }
public static async Task <DirectoryContent> Get(Directory directory) { DirectoryContent content = new DirectoryContent { Path = directory.Path, Info = new DirectoryInfo(), }; switch (UserSettings.Mode) { case Mode.BASIC: { switch (directory.Path) { case BrickExplorer.ROOT_PATH: { List <Directory> dirs = new List <Directory>(); dirs.Add(await BrickExplorer.GetDirectory(BrickExplorer.PROJECTS_PATH)); if (Manager.Brick.SDCard != null) { dirs.Add(await BrickExplorer.GetDirectory(BrickExplorer.SDCARD_PATH)); } content.Directories = dirs.ToArray(); content.Info.ItemCount = content.Directories.Length; break; } case BrickExplorer.PROJECTS_PATH: { content.Directories = await Manager.Brick.Drive.GetDirectories(); content.Info.ItemCount = content.Directories.Length; break; } case BrickExplorer.SDCARD_PATH: { content.Directories = await Manager.Brick.SDCard.GetDirectories(); content.Info.ItemCount = content.Directories.Length; break; } default: { //only get files content.Files = await BrickExplorer.GetFiles(directory.Path); foreach (File file in content.Files) { content.Info.TotalByteSize += file.Size; } content.Info.ItemCount = content.Files.Length; break; } } return(content); } default: { Framework.Core.DirectoryContent dc = await BrickExplorer.GetDirectoryContent(directory.Path); content.Directories = dc.Directories; content.Files = dc.Files; foreach (File file in content.Files) { content.Info.TotalByteSize += file.Size; } content.Info.ItemCount = content.Directories.Length + content.Files.Length; return(content); } } }
private async Task DownloadBasic(Directory directory, string toLocalPath) { labelAction.Text = "Downloading..."; labelContent.Text = directory.Path; string localPath = System.IO.Path.Combine(toLocalPath, directory.Name); switch (directory.Path) { case BrickExplorer.ROOT_PATH: { localPath = System.IO.Path.Combine(toLocalPath, Manager.Brick.Name); break; } case BrickExplorer.PROJECTS_PATH: { localPath = System.IO.Path.Combine(toLocalPath, "Drive"); break; } case BrickExplorer.SDCARD_PATH: { localPath = System.IO.Path.Combine(toLocalPath, "SDCard"); break; } } System.IO.Directory.CreateDirectory(localPath); if (directory.Path != BrickExplorer.ROOT_PATH) { File[] files = await BrickExplorer.GetFiles(directory.Path); foreach (File file in files) { labelContent.Text = file.Path; byte[] data = await file.Download(); if (data != null && data.Length > 0) { string filePath = System.IO.Path.Combine(localPath, file.FileName); using (System.IO.FileStream fs = new System.IO.FileStream(filePath, System.IO.FileMode.Create)) { fs.Write(data, 0, data.Length); } } } } switch (directory.Path) { case BrickExplorer.ROOT_PATH: { string drivePath = System.IO.Path.Combine(localPath, "Drive"); System.IO.Directory.CreateDirectory(drivePath); foreach (Directory dir in await Manager.Brick.Drive.GetDirectories()) { await DownloadBasic(dir, drivePath); } if (Manager.Brick.SDCard != null) { string sdPath = System.IO.Path.Combine(localPath, "SDCard"); System.IO.Directory.CreateDirectory(sdPath); foreach (Directory dir in await Manager.Brick.SDCard.GetDirectories()) { await DownloadBasic(dir, sdPath); } } break; } case BrickExplorer.PROJECTS_PATH: { foreach (Directory dir in await Manager.Brick.Drive.GetDirectories()) { await DownloadBasic(dir, localPath); } break; } case BrickExplorer.SDCARD_PATH: { foreach (Directory dir in await Manager.Brick.SDCard.GetDirectories()) { await DownloadBasic(dir, localPath); } break; } } }
/// <summary> /// Gets all files in this directory /// </summary> /// <returns><c>File[]</c></returns> public async Task <File[]> GetFiles() { return(await BrickExplorer.GetFiles(Path)); }