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]指定的路径或文件名太长