267

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

4

14 回答 14

296

文件名的各个组成部分(即路径上的每个子目录和最终文件名)限制为 255 个字符,总路径长度限制为大约 32,000 个字符。

但是,在 Windows 上,您不能超过MAX_PATHvalue(文件 259 个字符,文件夹 248 个字符)。看http://msdn.microsoft.com/en-us/library/aa365247.aspx了解完整详情。

于 2008-11-05T16:41:17.457 回答
29

它是 257 个字符。准确地说:NTFS 本身确实规定了几千个字符的最大文件名长度(大约 30'000 左右)。但是,Windows 为 Path+Filename 规定了 260 的最大长度。驱动器+文件夹至少占用 3 个字符,因此您最终得到 257 个字符。

于 2008-11-05T16:45:30.817 回答
28

这是框架 4.5 在尝试保存具有长文件名的文件时所说的“未处理的异常”:

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

截屏

于 2013-04-12T12:29:53.290 回答
14

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

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

我想知道还有其他设置限制吗?自己试试吧。

于 2008-11-05T16:48:45.023 回答
14

NTFS 中的长度是 255。NTFS 属性中的NameLength字段$Filename是一个没有偏移的字节;这会产生 0-255 的范围。

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

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

于 2010-08-24T13:51:52.610 回答
13

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

但是阅读文章,它有点复杂。

于 2008-11-05T16:42:00.840 回答
8

255 个字符。

http://en.wikipedia.org/wiki/文件名

于 2008-11-05T16:40:47.567 回答
5

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

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

于 2012-10-09T14:16:48.767 回答
4

官方文档的这一部分明确表示,NTFS、exFAT 和 FAT32是255 个 Unicode 字符,UDF 是 127 个 Unicode 或 254 个 ASCII 字符。

除此之外,最大路径名长度始终为 32,760 个 Unicode 字符,每个路径组件不超过 255 个字符。

于 2018-08-09T20:31:15.540 回答
3

根据新的 Windows SDK 文档 (8.0),似乎提供了新的路径限制。有一组新的路径处理函数和 PATHCCH_MAX_CCH 的定义,如下所示:

// max # of characters we support using the "\\?\" syntax
// (0x7FFF + 1 for NULL terminator)
#define PATHCCH_MAX_CCH             0x8000
于 2013-09-11T17:19:51.043 回答
1

255 个字符,但完整路径也不应该长于该长度。Wikipedia 上有一张关于此的漂亮表格:http ://en.wikipedia.org/wiki/Filename 。

于 2008-11-05T16:44:24.890 回答
-3

实际上是 256,请参阅文件系统功能比较,限制

http://fixunix.com/microsoft-windows/30758-windows-xp-file-name-length-limit.html上重复一个帖子

“假设我们谈论的是 NTFS 而不是 FAT32,“路径+文件的 255 个字符”是资源管理器的限制,而不是文件系统本身。NTFS 支持最多 32,000 个 Unicode 字符长的路径,每个组件最多 255 个字符。

Explorer - 和 Windows API - 将路径限制为 260 个字符,其中包括驱动器号、冒号、分隔斜线和终止空字符。如果您以\\"开头,则可以在 Windows 中读取更长的路径

如果您阅读上述帖子,您会发现有第五件事可以确定:找到至少一个顽固的计算机用户!

于 2009-11-20T17:01:24.730 回答
-3

238! 我用下面的 bat 脚本在 Win7 32 位下检查了它:

set "fname="
for /l %%i in (1, 1, 27) do @call :setname
@echo %fname%
for /l %%i in (1, 1, 100) do @call :check
goto :EOF
:setname
set "fname=%fname%_123456789"
goto :EOF
:check
set "fname=%fname:~0,-1%"
@echo xx>%fname%
if not exist %fname% goto :eof
dir /b
pause
goto :EOF
于 2015-05-28T14:08:40.457 回答
-3

我无法在 WS 2012 Explorer 中创建名称+句点+扩展名超过224个字符的文件。不要射击信使!

在同一服务器的 CMD 中,我无法创建超过235 个字符的名称:

该系统找不到指定的路径。

在资源管理器中创建的具有 224 个字符名称的文件无法在 Notepad++ 中打开 - 它只是提供了一个新文件。

于 2018-02-23T21:12:37.533 回答