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 个字符限制是整个路径还是路径的一部分?的主要内容,如果未能解决你的问题,请参考以下文章

UNIX与Windows区别

Windows 文件 PathTooLongException:用于识别文件路径长于 255 的批处理文件

Linux下的/etc/hosts文件

Windows 上是不是有 Unix 域套接字模拟?

java中Windows与Unix上的文件路径问题

如何在 Windows 8.1 中移动路径名 > 255 个字符的文件夹/文件? [关闭]