【问题标题】: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/…

标签: c# limit filepath maxlength max-path


【解决方案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 个字符?
      猜你喜欢
      • 2021-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-16
      • 2012-04-30
      • 2014-05-11
      • 1970-01-01
      相关资源
      最近更新 更多