Windows 和 Unix 上文件名的 255 个字符限制是整个路径还是路径的一部分?
Posted
技术标签:
【中文标题】Windows 和 Unix 上文件名的 255 个字符限制是整个路径还是路径的一部分?【英文标题】:Is the 255 char limit for filenames on Windows and Unix the whole path, or part of path? 【发布时间】:2013-01-08 04:22:42 【问题描述】:Windows NTFS 和 Unix 上文件名的 255 个字符限制是整个路径还是路径的一部分?
即给定 c:\part1\part2 只有 part1 和 part2 必须小于 255 还是 C:\ + part1 + part2
Unix 的规则是什么?
【问题讨论】:
你可以look it up。 【参考方案1】:除了上面的答案之外,您还必须考虑正在使用的文件系统(ext2 等)。 Unix 没有标准答案。 Linux 通常为每个组件 255 个,完整路径为 4096,或者路径不受限制。其他 Unix 变体使用不同的限制。带有 HFS+ 的 OSX 是 255 文件名和 1024 或无限路径(我找不到明确的答案)。除非您确定您只需要担心 Linux,否则您可能希望保持整体路径较低以确保安全。如果可能,将整个路径限制为 255 并不是一个坏主意。您可能还需要考虑文件系统可以挂载在网络上,而 NFS、SMB 等也有其自身的限制。
Unix 的简短回答是没有简短的回答,也没有标准,操作系统和底层文件系统都施加了限制。
【讨论】:
谢谢,真的是一罐虫子。【参考方案2】:在 Linux 系统上,part1 和 part2 都应为 255(即FILE_MAX
)或更小,整个路径应为 4096(即PATH_MAX
)或更小。正如here 所解释的那样,PATH_MAX 的使用存在缺陷。
【讨论】:
【参考方案3】:在 Windows 上,第 1 部分和第 2 部分应为 255 或更小,整个 c:\part1\part2 应为 260 或更小。有一种方法可以在 WinNT 内核(Windows 2000、XP 和更高版本)上拥有更长的文件名和路径,但这要求访问此类文件的应用程序明确支持此类文件名,因此在绝大多数情况下,您可以将 255/260 限制视为硬限制。
【讨论】:
感谢您在 Windows 上的回答,现在只需要一个用于 UNIX 的 为什么是 260?似乎是一个任意数字。 ***.com/questions/1880321/… 可以绕过 260 个字符的限制,但不能绕过单个组件的 255 个字符的限制。以上是关于Windows 和 Unix 上文件名的 255 个字符限制是整个路径还是路径的一部分?的主要内容,如果未能解决你的问题,请参考以下文章