【问题标题】:How to create a folder with name more than 260 charaters如何创建名称超过 260 个字符的文件夹
【发布时间】:2013-03-22 09:53:29
【问题描述】:

我想务实地创建一个文件夹层次结构。但问题是在某些情况下文件夹名称超过 260 个字符并且文件夹创建失败。我已经使用 Win32 文件命名空间创建了这个文件夹层次结构。 我想创建以下格式的文件夹结构。 DRIVE_LETTER:\FOLDER1\FOLDER2\FOLDER3\FOLDER4........\FOLDER(N-1)\FOLDER(N)

FOLDER1、FOLDER2、FOLDER3 等是文件夹的名称。这些名称的长度超过 260 个字符 例如:

FOLDER1 name is qwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnm

FOLDER2 name is mnbvcxzlkjhgfdsapoiuytrewqmnbvcxzlkjhgfdsapoiuytrewqmnbvcxzlkjhgfdsapoiuytrewqmnbvcxzlkjhgfdsapoiuytrewqmnbvcxzlkjhgfdsapoiuytrewqmnbvcxzlkjhgfdsapoiuytrewqmnbvcxzlkjhgfdsapoiuytrewqmnbvcxzlkjhgfdsapoiuytrewqmnbvcxzlkjhgfdsapoiuytrewqmnbvcxzlkjhgfdsapoiuytrewqmnbvcxzlkjhgfdsapoiuytrewqmnbvcxzlkjhgfdsapoiuytrewq

这样就可以了。

我怎样才能克服这个文件夹名称/文件名名称长度限制。

操作系统:Windows 7 64 位和 Windows Server 2008 R2 64 位。

请帮忙

【问题讨论】:

  • 您将收到错误代码 123:ERROR_INVALID_NAME。这是您可能测试的代码:CreateDirectory(L"\\\\?\\C:\\qwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnm", NULL);

标签: windows winapi windows-server-2008 directory windows-7-x64


【解决方案1】:

MSDN 的CreateDirectory function 向您解释了这一点:

要将此限制扩展到 32,767 个宽字符,请调用 Unicode 函数的版本并将\\?\ 添加到路径中。更多 信息,请参阅命名文件。

另见:Should I deal with files longer than MAX_PATH?

NTFS 支持最大为 32K(32,767 个宽字符)的文件名。你需要 仅使用正确的 API 和正确的文件名语法。基本规则 是:文件名应以\\?\ 开头,如\\?\C:\Temp。相同 可用于 UNC 的语法:\\?\Server\share\Path

【讨论】:

    【解决方案2】:

    您可以使用以下两个技巧之一:

    • 要创建路径长度超过 260 个字符的文件夹结构,例如 C:\folder1\folder2\...\folder20,您可以创建 C:\folder19C:\folder20,然后将 folder20 及其所有子文件夹移动到 C:\folder19,然后创建 @ 987654327@ 并在 C:\folder18 内移动 C:\folder19folder20。重复,直到您完成创建此结构。
    • 您可以使用\\?\C:\folder1\folder2\...\folder20 符号来创建您的路径。更多信息在这里:http://msdn.microsoft.com/en-us/library/windows/desktop/aa365247(v=vs.85).aspx(搜索词最大路径长度限制)。

    【讨论】:

    • 看起来这些技巧在 Windows 10 上不再适用。两者都给出错误提示路径太长。
    【解决方案3】:

    单个路径组件(例如文件夹名或文件名)受GetVolumeInformation 返回的MaximumComponentLength 值的限制。这在理论上是特定于文件系统的,但实际上始终是 255。

    因此,除非您制作自己的支持更长文件组件的文件系统驱动程序,否则您无法按照您的要求进行操作。但是,您可以做的是创建一个总长度超过 260 个字符的路径,正如其他答案中的指针一样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-01
      • 2015-08-18
      • 1970-01-01
      • 2015-10-29
      • 1970-01-01
      • 2011-07-08
      相关资源
      最近更新 更多