using System; using System.IO; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace BITKit.IO { public class FolderProvider : IStorageFolder { readonly DirectoryInfo directoryInfo; public FolderProvider(DirectoryInfo directoryInfo) { this.directoryInfo = directoryInfo; } public FolderProvider(string path) { this.directoryInfo=new DirectoryInfo(path); } public DateTime GetLastUpdated() { return directoryInfo.LastWriteTime; } public string GetName() { return directoryInfo.Name; } public IStorageFolder GetParent() { return new FolderProvider(directoryInfo.Parent); } public string GetPath() { return directoryInfo.FullName; } public long GetSize() { return DirSize(directoryInfo); } long DirSize(DirectoryInfo d) { long size = 0; // Add file sizes. FileInfo[] fis = d.GetFiles(); foreach (FileInfo fi in fis) { size += fi.Length; } // Add subdirectory sizes. DirectoryInfo[] dis = d.GetDirectories(); foreach (DirectoryInfo di in dis) { size += DirSize(di); } return size; } } }