我正在设计一个数据库表,它将保存上传文件的文件名。 Windows XP或Vista使用的NTFS文件名的最大长度是多少?
答案 0 :(得分:262)
文件名的各个组件(即路径中的每个子目录和最终文件名)限制为255个字符,总路径长度限制为大约32,000个字符。
但是,在Windows上,您不能超过MAX_PATH
值(文件为259个字符,文件夹为248个字符)。有关详细信息,请参阅 http://msdn.microsoft.com/en-us/library/aa365247.aspx。
答案 1 :(得分:25)
这是257个字符。 确切地说: NTFS本身确实施加了几千个字符的最大文件名长度(大约30,000个字符)。 但是,Windows为Path + Filename强加了260最大长度。驱动器+文件夹至少占用3个字符,因此最终得到257。
答案 2 :(得分:24)
当尝试使用长文件名保存文件时,这就是框架4.5中的“未处理异常”:
指定的路径,文件名或两者都太长。完全限定的文件名必须小于 260 个字符,目录名称必须小于 248 个字符。
答案 3 :(得分:15)
199在Windows XP NTFS上,我刚检查过。
这不是理论,而是来自我的笔记本电脑。可能会有缓解效果,但它实际上不会让我变大。
是否还有其他一些设置限制了这一点,我想知道吗?亲自试试。
答案 4 :(得分:13)
根据MSDN,它是260个字符。它包括"<NUL>"
- 不可见的终止空字符,因此实际长度为259.
但阅读这篇文章,它有点复杂。
答案 5 :(得分:12)
NTFS中的长度为255. NTFS NameLength
属性中的$Filename
字段是一个没有偏移的字节;这产生了0-255的范围。
文件名iself可以位于不同的“名称空间”中。到目前为止有:POSIX,WIN32,DOS和(WIN32DOS - 当文件名本身可以是DOS名称时)。 (由于字符串有一个长度,可以包含\ 0,但这会产生问题而不在上面的命名空间中。)
因此,文件或目录的名称最多可以包含255个字符。在Windows下指定完整路径时,需要prefix the path with \\?\ (or use \\?\UNC\server\share for UNC paths)将此路径标记为扩展长度(~32k字符)。如果您的路径较长,则必须设置工作目录(由于流程范围的设置导致的副作用)。
答案 6 :(得分:7)
答案 7 :(得分:4)
我将此添加到上述批准的答案中。
要清楚,人们认为它是255-260个字符的原因是因为这是Windows资源管理器支持的全部内容。如果文件名上的文件副本长于此值,则会出错。但是,一个程序可以读取和写入更长的文件名(这就是你如何获得Explorer首先抱怨的长度)。在这种情况下,微软的“推荐修复”是在原始程序中打开文件并将其重命名。
答案 8 :(得分:3)
根据新的Windows SDK文档(8.0),似乎提供了新的路径限制。有一组新的path handling functions和PATHCCH_MAX_CCH的定义如下:
// max # of characters we support using the "\\?\" syntax
// (0x7FFF + 1 for NULL terminator)
#define PATHCCH_MAX_CCH 0x8000
答案 9 :(得分:3)
This part of the official documentation清楚地表明,对于NTFS,exFAT和FAT32,它是 255个Unicode字符,对于UDF是127个Unicode或254个ASCII字符。
除此之外,最大路径名长度始终为32,760个Unicode字符,每个路径部分最多不超过255个字符。
答案 10 :(得分:2)
255个字符,但完整路径也不应长于此字符。维基百科上有一个很好的表格:http://en.wikipedia.org/wiki/Filename。
答案 11 :(得分:-2)
实际上是256,请参阅 File System Functionality Comparison, Limits 。
在http://fixunix.com/microsoft-windows/30758-windows-xp-file-name-length-limit.html
上重复发帖“假设我们谈论的是NTFS而不是FAT32,那就是”255个字符 for path + file“是Explorer的限制,而不是文件系统本身。 NTFS支持最多32,000个Unicode字符的路径,每个路径都有 组件最多255个字符。
资源管理器 - 以及Windows API-限制为260个字符 路径,包括驱动器号,冒号,分隔斜线和 终止空字符。可以阅读更长的路径 Windows,如果您使用
启动它\\
“
如果您阅读上述帖子,您会看到第5件事您可以确定: 找到至少一个顽固的计算机用户!
答案 12 :(得分:-2)
<强> 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
答案 13 :(得分:-2)
我无法在WS 2012 Explorer中创建名称为+ period + \ textnesion的文件长于 224 个字符。不要射击信使!
在同一服务器的CMD中,我无法创建比 235 更长的字符名称:
系统找不到指定的路径。
在资源管理器中创建的具有224个字符名称的文件无法在Notepad ++中打开 - 它只是提供了一个新文件。