C#:有啥办法可以绕过完全限定路径的 260 个字符限制? [复制]

Posted

技术标签:

【中文标题】C#:有啥办法可以绕过完全限定路径的 260 个字符限制? [复制]【英文标题】:C#: Any way to get around the 260 character limit of a fully qualified path? [duplicate]C#:有什么办法可以绕过完全限定路径的 260 个字符限制? [复制] 【发布时间】:2011-06-08 00:53:28 【问题描述】:

可能重复:Why does the 260 character path length limit exist in Windows?

我正在尝试找出一种方法来绕过这个可怕的 260 个字符的完全限定路径限制,同时我想知道为什么一开始就存在路径限制!?我知道在某些人看来 260 似乎“很多”,但自从我遇到这个问题以来,它确实不是。

基本上:为什么一定要有字数限制? 如何绕过它?

【问题讨论】:

听说过推特?它有 140 个字符的限制。这就是对 Bitly 等 URL 缩短器的兴趣高涨的原因之一。 这是一个旧的 Windows 操作系统限制,不再相关,但它仍然对许多操作系统功能产生影响。但是您现在可以在 .NET 框架中使用长文件名。 visualstudio.uservoice.com/forums/121579-visual-studio-ide/… 【参考方案1】:

来自MSDN:

Windows API 有许多函数也有 Unicode 版本,以允许最大总路径长度为 32,767 个字符的扩展长度路径。这种类型的路径由用反斜杠分隔的组件组成,每个组件的最大长度为 GetVolumeInformation 函数的 lpMaximumComponentLength 参数中返回的值(该值通常为 255 个字符)。要指定扩展长度的路径,请使用“\\?\”前缀。例如,“\\?\D:\very long path”。

【讨论】:

【参考方案2】:

首先,这与 C# 无关,与存在限制的 Windows API 有关。 :)

查看this question 及其答案,这将引导您访问 MSDN:Naming Files, Paths, and Namespaces

Unicode 文件路径(在问题的答案和 MSDN 文章中描述)可能是解决方案,但有一些注意事项。

【讨论】:

【参考方案3】:

使用\\?\ UNC 前缀来打破路径的“DOS 模式”。 UNC 路径的最大长度为 32k 个字符。

更多信息在这里:http://msdn.microsoft.com/en-us/library/aa365247.aspx

【讨论】:

"\\?\" 不使其成为 UNC,\\?\ 支持 UNC。 每个组件 (\ ... ) 都有一个lpMaximumComponentLength 值限制(来自GetVolumeInformation 函数)。 有没有办法解决这个组件限制,让每个组件都比指定的限制长,例如默认的 255 个字符? @Swtsvn 当文件名最大长度为 255 个字符时,一个组件怎么能超过 255 个字符?

以上是关于C#:有啥办法可以绕过完全限定路径的 260 个字符限制? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

哪位高人指点一下,C#中两个动态lambda 表达式有啥办法合并成一个? 谢谢!

错误及异常处理-[PathTooLongException]指定的路径或文件名太长

如何使用环境路径查找可能未完全限定的文件?

如何通过 260 个字符的路径限制 [重复]

如何将相对路径转换为 ​​C#/.NET 中的完全限定路径?

c# 获取文件路径