NTFS(Windows XP和Windows Vista)中的文件名长度是多少?

Gat*_*ler 249 filenames windows-xp ntfs windows-vista name-length

我正在设计一个数据库表,它将保存上传文件的文件名.Windows XP或Vista使用的NTFS文件名的最大长度是多少?

Ada*_*eld 273

文件名的各个组件(即沿路径的每个子目录和最终文件名)限制为255个字符,总路径长度限制为大约32,000个字符.但是,您通常应尽可能将路径长度限制为低于260个字符(MAX_PATH).看到有关详细信息,请访问http://msdn.microsoft.com/en-us/library/aa365247.aspx.

  • 根据您提供的链接更正NTFS,对Windows不正确:"在Windows API中(以下段落中讨论了一些例外情况),路径的最大长度为MAX_PATH,定义为260个字符".出于所有实际目的,*********路径限制为259个字符(允许空终止符). (58认同)
  • 显然,如果您使用Windows API文件方法的"unicode版本",如果前缀为"\\?\"的路径名,则最多可以达到32767是对的吗? (9认同)
  • @rogerdpack:对于完整路径,是的,但是每个单独的组件(子文件夹/最终文件)都有255个utf-16代码点的限制.另外,普通软件期望MAX_PATH,所以......*热潮*:) (6认同)
  • 在Windows 10(版本1607 - 周年纪念更新)和Windows Server 2016中,通过覆盖计算机配置 - >管理模板 - >系统 - >文件系统下的组策略条目启用NTFS长路径,可以选择忽略MAX_PATH问题: (5认同)
  • 以下是确认此答案的更多事实(Windows通常限制为260个字符):http://msdn.microsoft.com/en-us/library/system.io.PathTooLongException.aspx和http://blogs.msdn的.com/b/bclteam /存档/ 2007/02/13 /长径-在净部分-1-的-3- KIM-hamilton.aspx (4认同)
  • 对于绝对可疑的建议以低于MAX_PATH的方式表示否决...我们已经不在1980年代了! (2认同)

小智 26

当尝试使用长文件名保存文件时,这就是框架4.5中的"未处理异常":

指定的路径,文件名或两者都太长.完全限定的文件名必须少于260个字符,目录名必须少于248个字符.

截图


Alp*_*ger 25

这是257个字符.确切地说:NTFS本身确实施加了几千个字符的最大文件名长度(大约30,000个字符).但是,Windows为Path + Filename强加了260最大长度.驱动器+文件夹至少占用3个字符,因此最终得到257个字符.

  • 错误 - NUL终结符是MAX_PATH的一部分,它为您提供256个字符的最大路径(由于单个组件限制为255,您将无法创建它). (20认同)
  • "由于个别组件限制为255,您将无法创建"错误.我们在这里谈论最大路径长度,而不是最大单个路径组件长度.此外,"当使用API​​创建目录时,指定的路径不能太长,以至于您无法附加8.3文件名(即目录名称不能超过MAX_PATH减去12)." (4认同)
  • @LudovicKuty:*实际上* OP 在谈论**文件名长度** 限制,而不是**路径长度**(是的,即使在原始版本中,我也检查过)。他/她非常具体地指的是 NTFS 限制,而不是操作系统、特定子系统或 API 或框架的限制。 (3认同)

dov*_*ove 16

199在Windows XP NTFS上,我刚检查过.

这不是理论,而是仅仅是试试我的笔记本电脑.可能会有缓解效果,但它实际上不会让我变大.

有什么其他设置限制这个,我想知道吗?亲自试试吧.

  • 200个字符的限制似乎是在资源管理器中。其他程序可以创建更长的文件名。这可能是为了保护用户免受其自身伤害而有意设置的限制。:-) (2认同)

Kib*_*bee 13

根据MSDN,它是260个字符.它包括"<NUL>"- 不可见的终止空字符,因此实际长度为259.

但阅读文章,它有点复杂.


Dom*_*ber 12

NTFS中的长度为255. NameLengthNTFS $Filename属性中的字段是一个没有偏移量的字节; 这产生了0-255的范围.

文件名iself可以位于不同的"名称空间"中.到目前为止有:POSIX,WIN32,DOS和(WIN32DOS - 当文件名本身可以是DOS名称时).(由于字符串有一个长度,它可能包含\ 0,但这会产生问题而不在上面的命名空间中.)

因此,文件或目录的名称最多可以包含255个字符.在Windows下指定完整路径时,需要在路径前加上\\?\(或使用\\?\ UNC\server\share作为UNC路径)将此路径标记为扩展长度(~32k字符) .如果您的路径较长,则必须设置工作目录(由于流程范围设置导致的副作用).


std*_*ave 5

我将此添加到上述批准的答案中。

需要明确的是,人们认为它是 255-260 个字符的原因是因为这是 Windows 资源管理器支持的全部内容。在比这更长的文件名上执行诸如文件复制之类的操作时会出错。但是,程序可以读取和写入更长的文件名(这就是 Explorer 首先抱怨的长度)。在这种情况下,Microsoft 的“推荐修复”是在编写它的原始程序中打开文件并重命名它。