18

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

非常感谢!

4

3 回答 3

27

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

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

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

于 2009-12-07T02:32:49.467 回答
4

引用自维基百科

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

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

于 2009-12-07T01:50:18.367 回答
3

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

于 2009-12-07T01:55:12.057 回答