public static void ProcessAllFoldersInList(SPList list) { string viewFields = ContentIterator.FolderCoreViewFields + "<FieldRef Name=\"ItemChildCount\"/>" + "<FieldRef Name=\"FolderChildCount\"/>"; // Handle the root web separately since it is not contained in the hierarchy ProcessFolder(list.RootFolder); // Check if the list has folders other than the root folder if (!SPFolderHierarchy.ListHasFolders(list)) { return; } try { SPFolderHierarchy folders = new SPFolderHierarchy(list, true, viewFields, true); Console.WriteLine(string.Format(CultureInfo.InvariantCulture, "Total # of folders in list: {0}", folders.Count)); SPFolderHierarchy subFolders = folders.GetSubFolders(list.RootFolder.ServerRelativeUrl); foreach (SPFolder subfolder in ((IEnumerable <SPFolder>)subFolders)) { ProcessFolderRecursively(folders, subfolder); } } catch (SPQueryThrottledException ex) { HandleThrottledException(ex); } }
private static void ProcessFolderRecursively(SPFolderHierarchy folders, SPFolder folder) { ProcessFolder(folder); SPFolderHierarchy subFolders = folders.GetSubFolders(folder.ServerRelativeUrl); foreach (SPFolder subfolder in ((IEnumerable <SPFolder>)subFolders)) { ProcessFolderRecursively(folders, subfolder); } }
private static void DeleteEmptyFolders(SPFolderHierarchy h) { foreach (SPFolder folder in (h as IEnumerable <SPFolder>)) { if (folder.Item != null) { DeleteEmptyFolders(h.GetSubFolders(folder.ServerRelativeUrl)); if (folder.ItemCount == 0) { folder.Delete(); } } } }