2

我想务实地创建一个文件夹层次结构。但问题是在某些情况下文件夹名称超过 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 位。

请帮忙

4

3 回答 3

2

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

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

另请参阅:我应该处理超过 MAX_PATH 的文件吗?

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

于 2013-03-22T09:57:32.023 回答
1

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

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

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

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

于 2013-03-22T13:33:52.503 回答