public static Folder TraverseFolders(string path, ref Folder myFolder) { //DirectoryInfo di = new DirectoryInfo(path); //Folder myFolder = new Folder(di.Name); var subFolders = Directory.GetDirectories(path); var files = Directory.GetFiles(path); foreach (var file in files) { FileInfo fi = new FileInfo(file); File fileToAdd = new File(fi.Name, fi.Length); myFolder.AddFile(fileToAdd); } foreach (var subFolder in subFolders) { DirectoryInfo dir = new DirectoryInfo(subFolder); Folder folderToAdd = new Folder(dir.Name); myFolder.AddFolder(folderToAdd); TraverseFolders(subFolder, ref folderToAdd); } return myFolder; }