Check/Retrieve Folder Operations On/From SharePoint Online Libraries Using PnP Core CSOM Library

Introduction
 
In this article, you will learn about checking/retrieving the folders on/from SharePoint Online libraries, using PnP Core CSOM library.
The main advantage of using PnP Core library is the reduced code to get the required information. The required object can be retrieved with a very small piece of code, once the client context is set.
 
Prerequisite
  • PnP Core CSOM documentation can be found on the office site here.
  • PnP Core CSOM library packages can be downloaded here
The code, given below, is being tested, using Visual Studio console Application. Once the console Application is created, the packages can be installed, using Install-Package SharePointPnPCoreOnline command on Package Manager console of Visual Studio. Once installed, the references and packages will be imported to the solution.
 
The references used in the sample are given below.
  • Microsoft.SharePoint.Client
  • OfficeDevPnP.Core
Connect to SharePoint online site
 
The Authentication Manager is used to retrieve the client context of the site. To connect to SharePoint Online site, the method, given below is used.
  • GetSharePointOnlineAuthenticatedContextToken
The parameters required are,
  • SharePoint Online site URL.
  • Tenant UserId.
  • Tenant Password (or secured string).
Check If Folder Exists
 
Using PnP Core CSOM library, we can check if the folder already exists on the site library. The steps involved are- 
  • Input the site detail, the user details for the authentication, library and folder information.
  • Authenticate and get the client context of the site.
  • Retrieve the target list, using PnP Core library with the help of GetListByTitle method.
  • Using the list object, access the root folder and then the required folder with FolderExists method.
  • Display the results. 
The code snippet, given below shows the example of checking the folder availability.  
  1. // Input Parameters      
  2. string siteUrl = "https://nakkeerann.sharepoint.com/";  
  3. string userName = "[email protected]";  
  4. string password = "***";  
  5.   
  6. // PnP component to set context      
  7. AuthenticationManager authManager = new AuthenticationManager();  
  8. try  
  9. {  
  10.     // Get and set the client context  
  11.     // Connects to SharePoint online site using inputs provided  
  12.     using (var clientContext = authManager.GetSharePointOnlineAuthenticatedContextTenant(siteUrl, userName, password))  
  13.     {  
  14.   
  15.         // Input Parameter  
  16.         string listName = "Documents";  
  17.         string folderName = "TestFolder";  
  18.         // Get Library  
  19.         List list = clientContext.Site.RootWeb.GetListByTitle(listName);  
  20.   
  21.         // Create Folder  
  22.         bool folderExists = list.RootFolder.FolderExists(folderName);  
  23.         // Output  
  24.         if (folderExists)  
  25.         {  
  26.             Console.WriteLine("Folder exists");  
  27.         }  
  28.         else  
  29.         {  
  30.             Console.WriteLine("Folder doesn't exists");  
  31.         }  
  32.   
  33.         Console.ReadKey();  
  34.   
  35.     }  
  36. }  
  37. catch (Exception ex)  
  38. {  
  39.     Console.WriteLine("Error Message: " + ex.Message);  
  40.     Console.ReadKey();  
  41. }   
Retrieve Folder
 
The available folders can be retrieved from SharePoint libraries, using PnP Core CSOM library. The steps involved are - 
  • Input the site detail, the user details for the authentication, library and folder information.
  • Authenticate and get the client context of the site.
  • Retrieve the target list, using PnP Core library with the help of GetListByTitle method.
  • Using the list object, get the required folder, using ResolveSubFolder method.
  • Display the results.
The code snippet, given below shows the example of retrieving the folder/subfolder from the library.
  1. // Input Parameters      
  2. string siteUrl = "https://nakkeerann.sharepoint.com/";  
  3. string userName = "[email protected]";  
  4. string password = "***";  
  5.   
  6. // PnP component to set context      
  7. AuthenticationManager authManager = new AuthenticationManager();  
  8. try  
  9. {  
  10.     // Get and set the client context  
  11.     // Connects to SharePoint online site using inputs provided  
  12.     using (var clientContext = authManager.GetSharePointOnlineAuthenticatedContextTenant(siteUrl, userName, password))  
  13.     {  
  14.   
  15.         // Input Parameter  
  16.         string listName = "Documents";  
  17.         string folderName = "TestFolder";  
  18.         // Get Library  
  19.         List list = clientContext.Site.RootWeb.GetListByTitle(listName);  
  20.   
  21.         // Create Folder  
  22.         Folder folder = list.RootFolder.ResolveSubFolder(folderName);  
  23.         // Output  
  24.         Console.WriteLine("Server Relative Path : " + folder.ServerRelativeUrl);  
  25.         Console.ReadKey();  
  26.   
  27.     }  
  28. }  
  29. catch (Exception ex)  
  30. {  
  31.     Console.WriteLine("Error Message: " + ex.Message);  
  32.     Console.ReadKey();  
  33. }   
Summary
 
Thus, you have learned how to check if the folder exists on the library and also to retrieve the folder object from the library, using PnP Core CSOM library. The samples given above are compatible on SharePoint Online sites. For SharePoint On-Premise, the authentication method needs to be changed.