I ran into this issue at a client, and I found the information frickin sparse that was out there. If, at some point, you need to iterate through subfolders in a document library, you will find a nice set of posts out there saying “hey, just use recursion”. Being one that prefers copying and pasting methods into my classes, that just doesn’t really blow my hair back.
So, if you need to iterate through all your subfolders, here is the simple method that you can use to do so. You could obviously make this better with generics, but I am entirely too lazy to do so. You will notice that you should test whether you are returning the “forms” folder, since that is reserved and we don’t really care what is in it.
public SPFolderCollection subFolderCollection = null;
private void recurSubFolders(HtmlTextWriter output, string folderPath, SPFolderCollection subFolders)
if ((this.subFolderCollection != null) && (this.subFolderCollection.Count > 1))
foreach (SPFolder folder in subFolders)
if (folder.Name.ToLower() != “forms”)
string text = folderPath + @”\” + folder.Name;
this.recurSubFolders(output, text, folder.SubFolders);
That’s it. Happy recurring!