在Windows和Unix中,255个字符的文件名限制是针对整个路径还是部分路径?

4
在Windows NTFS和Unix中,255个字符的限制是针对整个路径还是部分路径?例如,对于c:\part1\part2这个路径,part1和part2的字符数必须小于255,还是C:\+ part1 + part2 的字符总数不能超过255?
在Windows NTFS中,255个字符的限制适用于整个文件路径(包括驱动器号)。在Unix中,文件名的长度限制取决于文件系统,但通常为255个字符。

你可以查找一下 - Alexey Frunze
3个回答

3
在Windows系统中,part1和part2的长度都应小于或等于255,并且整个c:\part1\part2的长度应小于或等于260。在WinNT内核(Windows 2000、XP及更高版本)上有一种方法可以使用更长的文件名和路径,但这需要访问此类文件的应用程序明确支持此类文件名,因此在绝大多数情况下,您可以将255/260限制视为硬限制。

谢谢你在Windows上的回答,现在只需要一个UNIX的答案。 - Paul Taylor
为什么是260?看起来像是一个随意的数字。 - Kyle
https://dev59.com/WHI-5IYBdhLWcg3wZ3UR - Jim Stewart
260个字符的限制可以被绕过,但每个组件的255个字符的限制是无法绕过的。 - Harry Johnston

2
除了上面的回答,你还要考虑所使用的文件系统(如ext2等)。对于Unix来说,没有标准答案。Linux一般为每个组件255个字符,完整路径为4096或无限制。其他Unix变种使用不同的限制。具有HFS+的OSX的文件名为255个字符,路径为1024或无限制(我找不到一个确定的答案)。除非你确定只需担心Linux,否则你可能希望保持整个路径尽可能短以确保安全。如果可能,将整个路径限制为255不是一个坏主意。你还需要考虑文件系统可以在网络上挂载,NFS、SMB等也有自己的限制。
Unix的简短答案是,既没有简短的答案,也没有标准答案,操作系统和底层文件系统都会强加限制。

谢谢,这确实是一个棘手的问题。 - Paul Taylor

1
在Linux系统上,part1和part2都应该小于等于255(即FILE_MAX),整个路径应该小于等于4096(即PATH_MAX)。使用PATH_MAX存在缺陷,如此处所述。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接