经过长时间的研究,我终于发现,即使在最新的Microsoft Windows 7中,路径名也不能超过256个字符。我真的不明白为什么会有如此愚蠢的限制,因为NTFS可以处理多达32,000个字符的路径长度十多年来没有任何问题!有没有可能改变这种状况?还是有实际的解决方案来避免这种情况?
即使对于简单的用例(例如带有长文件名的嵌套照片目录),也很少有260个字符。
经过长时间的研究,我终于发现,即使在最新的Microsoft Windows 7中,路径名也不能超过256个字符。我真的不明白为什么会有如此愚蠢的限制,因为NTFS可以处理多达32,000个字符的路径长度十多年来没有任何问题!有没有可能改变这种状况?还是有实际的解决方案来避免这种情况?
即使对于简单的用例(例如带有长文件名的嵌套照片目录),也很少有260个字符。
Answers:
传统Windows API将路径名限制为260个字符,即使是针对最新版本开发的应用程序也是如此。
使用支持Unicode的API的应用程序可以使用一种路径形式,最多允许32767个字符。文件名必须带有前缀\\?\
,并且必须是绝对路径,例如\\?\c:\dir\file
或\\?\UNC\server\share\file
。还有其他限制,有关详细信息,请参见参考。
如果您已经成功创建和使用了一个深层次的文件层次结构,并且需要使用一个由于文件名长度而引爆的应用程序,则可以尝试以下操作:
micros~1
,因此它基本上是随机的。
您可以对所有文件夹和文件使用简称(8.3)。
您需要确保已启用它们。
长文件名被认为是任何超出短MS-DOS(也称为8.3)样式命名约定的文件名。通常,Windows将长文件名存储在磁盘上作为特殊目录条目,出于性能原因,取决于特定的文件系统,可以在系统范围内禁用长文件名。创建长文件名时,Windows可能还会创建一个简短的8.3形式的名称(称为8.3别名),并将其存储在磁盘上。可以为指定的卷禁用此8.3别名。
(我的粗体)
您还必须编写一些代码以从长名称中获取短名称。