如何创建名称超过260个字符的文件夹

时间:2013-03-22 09:53:29

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

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

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

FOLDER1 的名称是qwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnm

FOLDER2 的名称mnbvcxzlkjhgfdsapoiuytrewqmnbvcxzlkjhgfdsapoiuytrewqmnbvcxzlkjhgfdsapoiuytrewqmnbvcxzlkjhgfdsapoiuytrewqmnbvcxzlkjhgfdsapoiuytrewqmnbvcxzlkjhgfdsapoiuytrewqmnbvcxzlkjhgfdsapoiuytrewqmnbvcxzlkjhgfdsapoiuytrewqmnbvcxzlkjhgfdsapoiuytrewqmnbvcxzlkjhgfdsapoiuytrewqmnbvcxzlkjhgfdsapoiuytrewqmnbvcxzlkjhgfdsapoiuytrewq

就像这样。

如何覆盖此文件夹名称/文件名称长度约束。

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

请帮忙

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

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

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