I created an application that downloads all document libraries on the SP site, but once informed me of this error (I tried to look at google but could not find anything, now if anyone knows any trick to solve this problem, please answer otherwise thanks for watching)
System.IO.PathTooLongException: The specified path, file name, or both are too long. A fully qualified file name must be less than 260 characters, and a directory name must be less than 248 characters. in System.IO.Path.NormalizePathFast (String path, Boolean fullCheck) in System.IO.Path.GetFullPathInternal (String path) in System.IO.FileStream.Init (String path, FileMode mode, access to FileAccess, Int32 rights, logical useRights, FileShare share, Int32 bufferSize, FileOptions, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy options) in System.IO.FileStream..ctor (String path, FileMode mode, access to FileAccess, FileShare share, Int32 bufferSize, FileOptions ) in System.IO.File.Create (String path)
it reaches the limit for the string, the code is listed below,
#region Downloading Schemes private void btnDownload_Click(object sender, EventArgs e) { TreeNode currentNode = tvWebs.SelectedNode; SPObjectData objectData = (SPObjectData)currentNode.Tag; try { CreateLoggingFile(); using (SPWeb TopLevelWeb = objectData.Web) { if(TopLevelWeb != null) dwnEachWeb(TopLevelWeb, TopLevelWeb.Title, tbDirectory.Text); } } catch (Exception ex) { Trace.WriteLine(string.Format("Exception caught when tried to pass TopLevelWeb:{1}, Title = {2}, object data to (dwnEachWeb_method), Exception: {0}", ex.ToString(), objectData.Web, objectData.Title)); } finally { CloseLoggingFile(); } } private void dwnEachWeb(SPWeb TopLevelWeb, string FolderName, string CurrentDirectory) { if (TopLevelWeb != null) { if (TopLevelWeb.Webs != null) { CurrentDirectory = CurrentDirectory + "\\" + TopLevelWeb.Title; CreateFolder(CurrentDirectory); foreach (SPWeb ChildWeb in TopLevelWeb.Webs) { dwnEachWeb(ChildWeb, ChildWeb.Title, CurrentDirectory); ChildWeb.Dispose(); } dwnEachList(TopLevelWeb, CurrentDirectory); //dwnEachList(TopLevelWeb, FolderName, CurrentDirectory); } } } private void dwnEachList(SPWeb oWeb, string CurrentDirectory) { foreach (SPList oList in oWeb.Lists) { if (oList is SPDocumentLibrary && !oList.Hidden) { dwnEachFile(oList.RootFolder, CurrentDirectory); } } } private void dwnEachFile(SPFolder oFolder, string CurrentDirectory) { if (oFolder.Files.Count != 0) { CurrentDirectory = CurrentDirectory + "\\" + oFolder.Name; CreateFolder(CurrentDirectory); foreach (SPFile ofile in oFolder.Files) { if (CreateDirectoryStructure(CurrentDirectory, ofile.Url)) { var filepath = System.IO.Path.Combine(CurrentDirectory, ofile.Url); byte[] binFile = ofile.OpenBinary(); System.IO.FileStream fstream = System.IO.File.Create(filepath); fstream.Write(binFile, 0, binFile.Length); fstream.Close(); } } } } //creating directory where files will be download private bool CreateDirectoryStructure(string baseFolder, string filepath) { if (!Directory.Exists(baseFolder)) return false; var paths = filepath.Split('/'); for (var i = 0; i < paths.Length - 1; i++) { baseFolder = System.IO.Path.Combine(baseFolder, paths[i]); Directory.CreateDirectory(baseFolder); } return true; } //creating folders private bool CreateFolder(string CurrentDirectory) { if (!Directory.Exists(CurrentDirectory)) { Directory.CreateDirectory(CurrentDirectory); } return true; } //shorting string