public void CreateFileTree(string pathToCopyFrom, Folder orginFolder) { try { Folder currentFodler = new Folder(pathToCopyFrom); orginFolder.AddFiles(GetFiles(pathToCopyFrom)); string[] dirs = Directory.GetDirectories(pathToCopyFrom); if (dirs.Length > 0) { for (int i = 0; i < dirs.Length; i++) { orginFolder.AddFolder(currentFodler); CreateFileTree(dirs[i], currentFodler); } } else { return; } } catch (UnauthorizedAccessException) { Console.WriteLine("Directory: {0}, CAN NOT be accessed!", pathToCopyFrom); return; } }
public static void Main() { string dir = @"D:\SAO"; Folder directoryCopyFolder = new Folder("D folder"); FileTreeUtils.CreateFileTree(dir, directoryCopyFolder); BigInteger size = 0; Console.WriteLine("Note: Use small directories for faster calculation."); Console.WriteLine(new string('-', Console.WindowWidth - 2)); Console.WriteLine("Calcualting folder size, pleace wait....."); Console.WriteLine(new string('-', Console.WindowWidth - 2)); Console.WriteLine("Folder {0} size is {1}", dir, directoryCopyFolder.GetFolderSize(size)); }
static Folder Traverse(string root) { var folder = new Folder(root); foreach (string file in Directory.GetFiles(root)) { folder.AddFile(new File(file, new FileInfo(file).Length)); } foreach (string directory in Directory.GetDirectories(root)) { folder.AddFolder(Traverse(directory)); } return folder; }
public void AddFolder(Folder currentFolder) { this.folders.Add(currentFolder); }