Windows可以处理的最长文件路径是什么?


Answers:


48

最大路径长度(来自MSDN)

在Windows API(以下段落讨论了一些例外)中,路径的最大长度为MAX_PATH,该长度定义为260个字符。本地路径按以下顺序构造:驱动器号,冒号,反斜杠,由反斜杠分隔的组件以及终止的空字符。例如,驱动器D上的最大路径是“ D:\ <一些256个字符的路径字符串> <NUL>”,其中“ <NUL>”代表当前系统代码页的不可见终止空字符。(此处使用字符<>是为了清晰起见,并且不能成为有效路径字符串的一部分。)


4
应该提到的是,您可以通过在路径前加上“ \\?”前缀来处理超出此限制的路径(我认为这是该字符序列)。
乔伊,

3
您还应该说明第二段中提到的unicode路径的限制:〜32k
akira

260?忽略drive:\和终止符的256个字符。是2009年,为什么我们只能得到一个字节的字符来玩耍?
Phoshi

@Phoshi默认情况下,操作系统不使用使用更长路径的API,因为将任意长字符串传递给开发人员编写的应用程序,这些应用程序编写得不好,他们知道路径永远不能超过260个字符,并决定分配固定长度保留它的数组将导致大量的缓冲区溢出,从而导致应用程序崩溃和/或被利用。具有相同错误知识的开发人员略微更好的实现将中止,因为其路径验证报告了一个过长的错误。
丹·尼利

15

XP档案路径-250个字元

Vista文件路径-260个字符

全新安装Windows XP的最长路径是152个字符。

半干净安装Windows Vista的最长路径是195个字符:

Windows XP允许文件名的长度最多为255个字符

Windows Vista允许更长的文件名,最多包含260个字符。

http://www.codinghorror.com/blog/archives/000729.html


5
如果你不使用Unicode的API,它扩展了极限位(32K〜,看到这只是真正msdn.microsoft.com/en-us/library/...

1
嗯。以这样的速度,Win7的限制应该在265个字符左右,不是吗?
2009年

他们为什么将限制增加十个字符?似乎不值得,是吧:\
Phoshi

这是不正确的。在任何Windows中,文件名的最大长度仍为255个字符,因为这是NTFS的限制
phuclv

8

Windows常数MAX_PATH等于其他答案说的260,但是,实际的最长路径是32767。

这里

32k正在使用UNICODE,但是现在我们必须使用它,因此我们也应该使用这样的最大路径长度。

另外,您也可以查看我在SO中的答案,其中解释了一些有关最大路径长度的详细信息。


1

“经典”限制为260个字符:drive letter+ :\+ 255 characters of filename+ \(或舍入)+ null terminator在其他的答案作为所述

但是,实际的内部限制是32767个字符,可以通过追加\\?\以获得完全限定的路径来实现

Windows API具有许多功能,它们也具有Unicode版本,以允许使用扩展长度的路径,最大总路径长度为32,767个字符。这种类型的路径由反斜杠分隔的组件组成,每个反斜杠都取决于函数lpMaximumComponentLength参数中返回的值GetVolumeInformation(该值通常为255个字符)。要指定扩展长度的路径,请使用"\\?\"前缀。例如,"\\?\D:\very long path"

如果由于某些原因无法使用完全限定的路径,则可以通过使用subst/ 挂载到驱动器号diskpart或通过创建结点 / 符号链接来缩短路径来访问更深的目录

从Windows 10开始,该MAX_PATH限制也已删除,尽管默认情况下不是

从Windows 10版本1607开始,MAX_PATH已从常见Win32文件和目录功能中删除了限制。但是,您必须选择加入新行为。

https://docs.microsoft.com/zh-CN/windows/desktop/FileIO/naming-a-file

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.