为了账号安全,请及时绑定邮箱和手机立即绑定

解决文件路径过长异常的最佳方法

解决文件路径过长异常的最佳方法

C#
呼啦一阵风 2019-12-16 12:12:59
我创建了一个应用程序,该应用程序下载了SP网站中的所有文档库,但有一次它给了我这个错误(我尝试查看Google,但找不到任何东西,现在,如果有人知道解决此问题的任何技巧,请回复,否则,谢谢看看)System.IO.PathTooLongException:指定的路径,文件名或两者都太长。完全限定的文件名必须少于260个字符,目录名称必须少于248个字符。在System.IO.Path.NormalizePathFast(字符串路径,布尔fullCheck)在System.IO.Path.GetFullPathInternal(字符串路径)在System.IO.FileStream.Init(字符串路径,FileMode模式,FileAccess访问,Int32权限,布尔useRights ,FileShare共享,Int32 bufferSize,FileOptions选项,SECURITY_ATTRIBUTES secAttrs,System.IO.FileStream..ctor(字符串路径,FileMode模式,FileAccess访问,FileShare共享,Int32 bufferSize,FileOptions选项)位于System.IO.FileStream..ctor。 IO.File.Create(字符串路径)它达到了字符串的限制,代码如下所示,#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)                {            }        }    }
查看完整描述

3 回答

?
LEATH

TA贡献1936条经验 获得超6个赞

由于错误的原因很明显,因此以下一些信息应可帮助您解决问题:


请参阅有关命名文件,路径和命名空间的这篇MS文章


这是链接的引文:


最大路径长度限制在Windows API(以下段落中讨论的某些例外情况)中,路径的最大长度为MAX_PATH,它定义为260个字符。本地路径按以下顺序构造:驱动器号,冒号,反斜杠,用反斜杠分隔的名称组件以及终止的空字符。例如,驱动器D上的最大路径是“ D:\一些256个字符的字符串<NUL>”,其中“ <NUL>”代表当前系统代码页的不可见终止空字符。(此处使用字符<>是为了清晰起见,并且不能成为有效路径字符串的一部分。)


和一些解决方法(摘自评论):


有解决各种问题的方法。下面列出的解决方案的基本思想始终是相同的:减小路径长度以具有path-length + name-length < MAX_PATH。你可以:


共享一个子文件夹

使用命令行通过SUBST分配驱动器号

使用VB下的AddConnection将驱动器号分配给路径



查看完整回答
反对 回复 2019-12-17
  • 3 回答
  • 0 关注
  • 786 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信