在Windows和Unix上,文件名的255个字符限制是整个path还是path的一部分?

Windows NTFS和Unix上的文件名的255个字符限制的整个path,或path的一部分?

即给定c:\ part1 \ part2只有part1和part2得到less于255或者它是C:\ + part1 + part2

什么是Unix的规则?

除了上面的答案之外,还必须考虑正在使用的文件系统(ext2等)。 Unix没有标准的答案。 Linux对于每个组件通常是255,对于完整路径是4096,对于路径是无限制的。 其他Unix变体使用不同的限制。 OSX与HFS +是255文件名和1024或无限路径(我找不到明确的答案)。 除非你是正面的,否则你只需要担心Linux,你可能会想保持整个路径低。 如果可能的话,将整个路径限制为255是个不错的主意。 您可能还需要考虑文件系统可以挂载网络,而NFS,SMB等也有自己的限制。

Unix的简短答案是没有简短的答案,也没有标准,操作系统和底层文件系统都是有限制的。

在Windows上,第1部分和第2部分应该都是255或更少,整个c:\ part1 \ part2应该是260或更少。 有一种方法可以在WinNT内核(Windows 2000,XP和更高版本)上拥有更长的文件名和路径,但是这要求访问此类文件的应用程序明确支持这种文件名,所以在绝大多数情况下,您可以将255/260的限制当作硬限制。

在Linux系统上,part1和part2都应该是255(即FILE_MAX )或更少,整个路径应该是4096(即PATH_MAX )或更少。 PATH_MAX的使用有缺陷,如此处所述。