我想以实际方式创建文件夹层次结构。但问题是在某些情况下文件夹名称超过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位。
请帮忙
答案 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)
您可以使用以下两种技巧之一:
C:\folder1\folder2\...\folder20
,您可以创建C:\folder19
,C:\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个字符的总长度的路径,就像其他答案中的指针一样。