using System;
public class Test
{
public static void Main( )
{
var root = GetDemoRoot( ) ;
var folderName = browse( root) ;
Console.WriteLine ( "you got: {0}" , folderName) ;
}
private static string browse( Folder folder)
{
string folderName = null ;
Console.WriteLine ( "now at {0}" , folder.Name ) ;
if ( folder.Folders != null )
{
for ( var i = 0 ; i < folder.Folders .Length ; i++ )
{
browse( folder.Folders [ i] ) ;
folderName = folder.Folders [ i] .Name ;
}
}
return folderName;
}
private static Folder GetDemoRoot( )
{
return new Folder
{
Name = "root" ,
Folders = new[ ]
{
new Folder
{
Name = "One" ,
Folders = new[ ]
{
new Folder
{
Name = "OnePointTwo"
}
}
} ,
new Folder
{
Name = "Two" ,
Folders = new[ ]
{
new Folder
{
Name = "TowPointOne" ,
Folders = new[ ]
{
new Folder
{
Name = "TowPointOnePointTwo"
}
}
}
}
} ,
new Folder
{
Name = "This is the last folder"
}
}
} ;
}
class Folder {
public string Name { get; set; }
//public string[] Items {get; set;}
public Folder[ ] Folders { get; set; }
}
}
dXNpbmcgU3lzdGVtOwoKcHVibGljIGNsYXNzIFRlc3QKewoJcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKQoJewoJCXZhciByb290ID0gR2V0RGVtb1Jvb3QoKTsKCQl2YXIgZm9sZGVyTmFtZSA9IGJyb3dzZShyb290KTsKCQlDb25zb2xlLldyaXRlTGluZSgieW91IGdvdDogezB9IiwgZm9sZGVyTmFtZSk7Cgl9CgkKCXByaXZhdGUgc3RhdGljIHN0cmluZyBicm93c2UoRm9sZGVyIGZvbGRlcikKCXsKCSAgICBzdHJpbmcgZm9sZGVyTmFtZSA9IG51bGw7CgkgICAgQ29uc29sZS5Xcml0ZUxpbmUoIm5vdyBhdCB7MH0iLCBmb2xkZXIuTmFtZSk7CgoJICAgIGlmIChmb2xkZXIuRm9sZGVycyAhPSBudWxsKQoJICAgIHsKCSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmb2xkZXIuRm9sZGVycy5MZW5ndGg7IGkrKykKCSAgICAgICAgewoJICAgICAgICAgICAgYnJvd3NlKGZvbGRlci5Gb2xkZXJzW2ldKTsKCSAgICAgICAgICAgIGZvbGRlck5hbWUgPSBmb2xkZXIuRm9sZGVyc1tpXS5OYW1lOwoJICAgICAgICB9CgkgICAgfQoJICAgIHJldHVybiBmb2xkZXJOYW1lOwoJfQoJCglwcml2YXRlIHN0YXRpYyBGb2xkZXIgR2V0RGVtb1Jvb3QoKQoJewoJCXJldHVybiBuZXcgRm9sZGVyCgkJewoJCQlOYW1lID0gInJvb3QiLAoJCQlGb2xkZXJzID0gbmV3W10KCQkJewoJCQkJbmV3IEZvbGRlciAKCQkJCXsKCQkJCQlOYW1lID0gIk9uZSIsCgkJCQkJRm9sZGVycyA9IG5ld1tdCgkJCQkJewoJCQkJCQluZXcgRm9sZGVyCgkJCQkJCXsKCQkJCQkJCU5hbWUgPSAiT25lUG9pbnRUd28iCQoJCQkJCQl9CgkJCQkJfQoJCQkJfSwKCQkJCW5ldyBGb2xkZXIgCgkJCQl7CgkJCQkJTmFtZSA9ICJUd28iLAoJCQkJCUZvbGRlcnMgPSBuZXdbXQoJCQkJCXsKCQkJCQkJbmV3IEZvbGRlcgoJCQkJCQl7CgkJCQkJCQlOYW1lID0gIlRvd1BvaW50T25lIiwJCgkJCQkJCQlGb2xkZXJzID0gbmV3W10KCQkJCQkJCXsKCQkJCQkJCQluZXcgRm9sZGVyCgkJCQkJCQkJewoJCQkJCQkJCQlOYW1lID0gIlRvd1BvaW50T25lUG9pbnRUd28iCQoJCQkJCQkJCX0KCQkJCQkJCX0KCQkJCQkJfQoJCQkJCX0KCQkJCX0sCgkJCQluZXcgRm9sZGVyCgkJCQl7CgkJCQkJTmFtZSA9ICJUaGlzIGlzIHRoZSBsYXN0IGZvbGRlciIKCQkJCX0KCQkJfQoJCX07CQkKCX0KCQoJY2xhc3MgRm9sZGVyIHsKCQlwdWJsaWMgc3RyaW5nIE5hbWUgeyBnZXQ7IHNldDsgfQoJCS8vcHVibGljIHN0cmluZ1tdIEl0ZW1zIHtnZXQ7IHNldDt9CgkJcHVibGljIEZvbGRlcltdIEZvbGRlcnMge2dldDsgc2V0O30KCX0KfQ==