NTFS文件系统中是否存在文件路径长度限制?

18
为什么在NTFS文件系统中无法创建字符数超过255的深路径? 这似乎是FAT32的限制,但在NTFS中也存在吗?是否有人可以提供一些文档?
非常感谢!
3个回答

28

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

但是,您可以绕过Win32规则并创建长达32K个字符的路径。基本上,您需要使用“\\?\C:\MyReallyLongPath\File.txt”语法,这可能是您之前没有见过的。 我最后检查时,.NET中的File和FileInfo类会阻止您使用此类型的路径,但是您肯定可以从C / C ++中执行此操作。 这里有更多信息的链接。

http://msdn.microsoft.com/zh-cn/library/aa365247(v=vs.85).aspx


1
需要注意的是,Windows 95引入了一个支持超过“MAX_PATH”字符长度路径的API:Shell API。 - Ian Boyd

4

引用自维基百科

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

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


3

文档。只要每个路径组件都不超过255字节,您肯定可以创建比255字节更长的文件路径。但是,您必须使用Unicode(W)版本的文件访问调用才能获得此行为;如果您使用ANSI(A)基于字节的接口(例如stdio使用的接口),则将受到旧的预Unicode路径接口的限制。


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