试了一下, 超长目录下连新建一个文件都办不到。
我建的目录为:D:\SS...S\ 一共 250 个S 。。。。
并且还是使用 \\?\D:\SSS..S\ 这个字符串建立的,不带前缀,连 250个S都直接报错。
最大路径长度
---------------------------
在Windows API中,路径的最大长度为MAX_PATH,MAX_PATH被定义为260。一个路径的结构如下所示:
|盘符|冒号|反斜杠|被反斜杠所划分的若干部分|NUL(‘\0’)|,例如:D:\<256 chars>NUL.
Note:Windows API中的函数将”/”转换成”\”,使之成为NT风格名字的一部分。
许多API函数的Unicode版本允许最大长度大约为32000个字符的路径,这种路径的每个部分最长由255个字符组成。(The Unicode versions of several functions permit a maximum path length of approximately 32,000 characters composed of components up to 255 characters in length)。要指定这种路径,需要使用”\\?\”作为前缀。
NOTE:最大的路径长度:32000字符是一个大概的数字,因为”\\?\”前缀能够扩展为一个更长的字符串,并且这个扩展在总长度中也被计算。
例如:”\\?\D:\<path>”。要指定这样一个UNC路径,使用”\\?\UNC\”前缀。例如:”\\?\UNC\<server>\<share>”。这些前缀本身不作为路径的一部分。它们表示被传递给系统的路径应该做一些最小限度的变化,这意味着不能使用斜杠(/)来表示路径分隔符,并且不能使用一个点号(.)来代表当前路径。同时,带有”\\?\”前缀的路径不能使用相对路径。相对路径被限制在MAX_PATH个字符。
当使用API创建一个目录时,指定的路径不能太长导致不能附加一个8.3格式的文件名。也就是说目录名字不能超过MAX_PATH减去12。