我问的是,是否有已知的文件系统可以成为 NTFS 的后继者?
我之所以问这个问题,是因为我刚买了一台新的外置电脑,发现文件路径(包括文件名本身)的总长度不能超过 255 个字符。微软将其称为“长文件名”。我猜想这是由于文件系统限制造成的,因此我正在寻找任何可能的替代方案。
我有一台基于 Windows 7 的机器,但我假设会有第三方软件可以与 Windows 配合使用,以使 Windows 资源管理器可以访问新的文件系统。
答案1
NTFS 有一个后继者。它就是 NTFS :)
(NTFS 保留了它的名字,但 Windows 的新版本有不同且改进的 NTFS 版本)
但是 NTFS 不是文件名长度限制的原因。检查此链接来自微软。我会复制相关的部分,尽管从另一边复制有点长。
最大路径长度限制
在 Windows API 中(以下段落中讨论了某些例外情况),路径的最大长度为 MAX_PATH,其定义为260 个字符。
本地路径的结构如下:驱动器号、冒号、反斜杠、以反斜杠分隔的名称部分以及终止空字符。例如,驱动器 D 上的最大路径为“D:\some 256 个字符的路径字符串”,其中“”表示当前系统代码页的不可见终止空字符。(此处使用字符 < > 是为了视觉清晰,不能作为有效路径字符串的一部分。)
注意:Windows API 中的文件 I/O 函数会将“/”转换为“\”,作为将名称转换为 NT 样式名称的一部分,但使用“\?\”前缀时除外,如下节所述。
Windows API 有许多函数也有 Unicode 版本,允许扩展路径长度,最大路径总长度为 32,767 个字符。此类路径由用反斜杠分隔的组件组成,每个组件的长度不超过 GetVolumeInformation 函数的 lpMaximumComponentLength 参数中返回的值(该值通常为 255 个字符)。要指定扩展长度的路径,请使用“\?\”前缀。例如,“\?\D:\very long path”。
答案2
您提到的限制是 Windows API 中的限制,而不是文件系统中的限制。为了传递长度超过 MAX_PATH 字符的文件名,Microsoft 已扩展 API 以接受长 Unicode 名称最多 32,767 个字符。但要使用更长的路径,它必须采用 Unicode,以 \\?\ 为前缀,并且完全限定(无相对路径名)。实际上,这意味着要使用这些更长的路径,文件系统和操作系统支持已存在,但您需要一个知道如何完成其部分的应用程序。