NTFS(Windows XP和Windows Vista)中的文件名最大长度?

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

文件名(即path中的每个子目录和最终文件名)的单个组件限制为255个字符,总path长度限制为大约32,000个字符。 但是,如果可能,通常应该将path长度限制在260个字符( MAX_PATH )以下。 有关完整的详细信息,请参见http://msdn.microsoft.com/en-us/library/aa365247.aspx

这是257个字符。 确切地说,NTFS本身的最大文件名长度是数千个字符(约30,000个字符)。 但是,Windows强制Path +文件名的最大长度为260。 驱动器+文件夹占用至less3个字符,所以你最终得到257。

当试图保存文件时,在框架4.5上得到了这个。

抛出异常

199在Windows XP NTFS上,我只是检查。

这不是理论,而是来自我的笔记本电脑。 可能会有减轻的影响,但它实际上不会让我做大。

有没有其他的设置限制这个,我想知道? 自己尝试一下。

根据MSDN ,这是260个字符。 它包括"<NUL>" – 不可见的终止空字符,所以实际的长度是259。

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

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

文件名iself可以在不同的“名称空间”中。 到目前为止,有:POSIX,WIN32,DOS和(WIN32DOS – 当一个文件名可以本地DOS名称)。 (由于string有一个长度,它可以包含\ 0,但是会产生问题,不在上面的命名空间中。)

因此,文件或目录的名称最多可以有255个字符。 在Windows下指定完整path时,您需要在path前加上\?\以将此path标记为扩展长度(〜32k个字符)。 如果你的path更长,你将不得不一直设置你的工作目录(ugh – 由于进程范围的设置而产生的副作用)。

我将这个添加到上面的批准的答案。

要清楚,人们认为它是255-260个字符的原因是因为这是Windows资源pipe理器支持的。 它会错误地做文件名比文件复制更长的文件。 然而,一个程序可以读取和写入更长的文件名(这是如何得到长度的资源pipe理器首先抱怨)。 在这种情况下,微软的“推荐修补程序”是在原始程序中打开并重命名文件。

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

 // max # of characters we support using the "\\?\" syntax // (0x7FFF + 1 for NULL terminator) #define PATHCCH_MAX_CCH 0x8000 

255个字符,尽pipe完整的path不应该比这个长。 在维基百科有一个很好的表格: http : //en.wikipedia.org/wiki/Filename 。

238! 我用下面的蝙蝠脚本检查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 

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

http://fixunix.com/microsoft-windows/30758-windows-xp-file-name-length-limit.html上重复发表;

“假设我们谈论的是NTFS而不是FAT32,那么”path+文件“的255个字符是Explorer的限制,而不是文件系统本身。NTFS支持长达32,000个Unicode字符的path,每个组件长达255个字符。

资源pipe理器和Windows API限制为260个字符的path,其中包括驱动器号,冒号,分隔斜杠和终止空字符。 如果你使用\\ “来启动它,可以在Windows中读取更长的path,

如果你阅读上面的post,你会看到有一个你可以肯定的第五件事:find至less一个顽固的计算机用户!