NTFS 中的文件路径是不是有长度限制?

Posted

技术标签:

【中文标题】NTFS 中的文件路径是不是有长度限制?【英文标题】:Is there any length-limits of file path in NTFS?NTFS 中的文件路径是否有长度限制? 【发布时间】:2010-12-23 20:40:16 【问题描述】:

为什么我不能在 NTFS 文件系统中创建路径中字符超过 255 个的深度路径? 好像FAT32有限制,NTFS也存在?谁能提供一些文件?

非常感谢!

【问题讨论】:

【参考方案1】:

260 个字符的限制不是文件系统的限制,而是 Win32 API 的限制。 Win32 将 MAX_PATH 定义为 260,这是 API 用来检查传递给 FileCreate、FileOpen 等函数(在 BCL 中由 .NET 使用)的路径长度的参数。

但是,您可以绕过 Win32 规则并创建最多 32K 个字符的路径。 基本上您需要使用“\\?\C:\MyReallyLongPath\File.txt”语法,您可以以前没见过。最后我检查了一下,.NET 中的 File 和 FileInfo 类阻止你使用这种类型的路径,但你绝对可以从 C/C++ 中做到这一点。以下是更多信息的链接。

http://msdn.microsoft.com/en-us/library/aa365247(VS.85).aspx

【讨论】:

应该注意的是,Windows 95 引入了一个 API,它支持长度超过 MAX_PATH 字符的路径:Shell API。【参考方案2】:

引用自百度

文件名仅限于 255 个 UTF-16 代码字。某些名称 保留在卷根中 目录,不能用于 文件。它们是:$MFT、$MFTMirr、 $LogFile、$Volume、$AttrDef、. (点), $Bitmap, $Boot, $BadClus, $Secure, $Upcase 和 $Extend;[3] 。 (点)和 $Extend 都是目录;这 其他是文件。 NT 内核限制 32,767 UTF-16 代码的完整路径 单词。

http://en.wikipedia.org/wiki/NTFS

【讨论】:

【参考方案3】:

Doc。您当然应该能够创建超过 255 字节的文件路径,只要每个单独的路径组件都在该路径下。但是,您必须使用文件访问调用的 Unicode (W) 版本才能获得此行为;如果您使用的是基于 ANSI (A) 字节的接口,例如 stdio 使用的接口,您将受到旧的 pre-Unicode 路径接口的限制。

【讨论】:

以上是关于NTFS 中的文件路径是不是有长度限制?的主要内容,如果未能解决你的问题,请参考以下文章

windows10如何解除文件路径最大长度限制?(xftp从ubuntu拷贝文件到windows错误失败)

Windows 内核中可能的最大文件名长度

windows路径太长无法删除

windows all version - 实现指定路径共享

在 C# 中将 UNC 路径转换为本地路径

如何在 python 中获得 unix 中的最大文件系统路径长度?