SPFolder Class
Represents a folder on a SharePoint Web site.
Inheritance Hierarchy
System.Object
Microsoft.SharePoint.SPFolder
Namespace: Microsoft.SharePoint
Assembly: Microsoft.SharePoint (in Microsoft.SharePoint.dll)
Syntax
<SharePointPermissionAttribute(SecurityAction.InheritanceDemand, ObjectModel := True)> _
<SharePointPermissionAttribute(SecurityAction.LinkDemand, ObjectModel := True)> _
Public Class SPFolder
Dim instance As SPFolder
[SharePointPermissionAttribute(SecurityAction.InheritanceDemand, ObjectModel = true)]
[SharePointPermissionAttribute(SecurityAction.LinkDemand, ObjectModel = true)]
public class SPFolder
Remarks
Various folder properties in the Microsoft.SharePoint namespace return a folder object; however, the GetFile method of the SPWeb class returns any folder from within a site or subsite.
Use the Folders property of the SPWeb class, or the SubFolders property of the SPFolder class, to return an SPFolderCollection object that represents the collection of folders for a site or folder. Use an indexer to return a single folder from the collection. For example, if the collection is assigned to a variable named collFolders, use collFolders[index] in C#, or collFolders(index) in Visual Basic, where index is either the index number of the folder in the collection or the display name of the folder.
Examples
The following code example displays information about the folders in a site and all its subsites, including the site name, folder name, number of files in the folder, and total size of the files.
This example requires using directives (Imports in Visual Basic) for the Microsoft.SharePoint and Microsoft.SharePoint.Utilities namespaces.
The example assumes the existence of an .aspx page that contains a label control.
Dim siteCollection As SPSite = SPControl.GetContextSite(Context)
Dim sites As SPWebCollection = siteCollection.AllWebs
Dim site As SPWeb
For Each site In sites
Dim folders As SPFolderCollection = site.Folders
Dim folder As SPFolder
For Each folder In folders
Dim files As SPFileCollection = folder.Files
Dim totalFileSize As Long = 0
Dim i As Integer
For i = 0 To files.Count - 1
totalFileSize += files(i).Length
Next i
Label1.Text += " Web: " & SPEncode.HtmlEncode(site.Name)
& " Folder: " _
& SPEncode.HtmlEncode(folder.Name) & " Number: "
& folder.Files.Count _
& " Size: " & totalFileSize & "<BR>"
Next folder
Next site
SPSite oSiteCollection = SPContext.Current.Site;
SPWebCollection collWebsites = oSiteCollection.AllWebs;
foreach (SPWeb oWebsite in collWebsites)
{
SPFolderCollection collFolders = oWebsite.Folders;
foreach (SPFolder oFolder in collFolders)
{
SPFileCollection collFiles = oFolder.Files;
long lngTotalFileSize = 0;
for (int intIndex = 0; intIndex < collFiles.Count; intIndex++)
{
lngTotalFileSize += collFiles[intIndex].Length;
}
Label1.Text += " Web: " +
SPEncode.HtmlEncode(oWebsite.Name)
+ " Folder: " +
SPEncode.HtmlEncode(oFolder.Name) + " Number: "
+ oFolder.Files.Count +
" Size: " + lngTotalFileSize + "<BR>";
}
oWebsite.Dispose();
}
Note
Certain objects implement the IDisposable interface, and you must avoid retaining these objects in memory after they are no longer needed. For information about good coding practices, see Best Practices: Using Disposable Windows SharePoint Services Objects.
Thread Safety
Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.