我正在设计一个数据库表,它将保存上传文件的文件名。windowsxp或Vista使用的NTFS中文件名的最大长度是多少?
当前回答
238年! 我在Win7 32位下用下面的bat脚本检查了它:
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
其他回答
官方文档的这一部分明确表示,对于NTFS, exFAT和FAT32,它是255个Unicode字符,对于UDF,它是127个Unicode或254个ASCII字符。
除此之外,最大路径名长度总是32,760个Unicode字符,每个路径组件不超过255个字符。
根据新的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
实际上是256,参见文件系统功能比较,限制。
重复http://fixunix.com/microsoft-windows/30758-windows-xp-file-name-length-limit.html上的帖子
假设我们说的是NTFS而不是FAT32,“255个字符 for path+file”是资源管理器的限制,而不是文件系统本身。 NTFS支持最多32,000个Unicode字符长的路径 组件最多255个字符。 资源管理器和Windows API-限制260个字符 路径,包括驱动器号、冒号、分隔的斜杠和 终止空字符。可以读取更长的路径 如果你用“\\”开头
如果你读了上面的文章,你会发现你可以确定的第五件事: 至少找到一个顽固的电脑用户!
我把这个加到上面批准的答案中。
需要说明的是,人们之所以认为它是255-260个字符,是因为Windows资源管理器只支持这一个字符。如果文件名比这个长,它就会出错。然而,程序可以读取和写入更长的文件名(这就是Explorer最初抱怨的长度)。在这种情况下,微软的“推荐修复”是在编写该文件的原始程序中打开该文件并重命名它。
Windows XP NTFS的199,我刚查过。
这不是理论,而是我在笔记本电脑上尝试的结果。可能会有缓解作用,但它不会让我把它变大。
我想知道是否有其他的设定限制了这一点?你自己试试吧。
推荐文章
- 如何循环通过文件匹配通配符在批处理文件
- Oracle中表名的最大长度是多少?
- 在Windows中删除大文件夹最快的方法是什么?
- Git复制文件保存历史
- 如何从Python中的文件名中替换(或剥离)扩展名?
- 在c#中从URI字符串获取文件名
- 在Python中构建完整的路径文件名
- 在Windows上更改文件的情况?
- 如何从PHP的完整路径中获得文件名?
- NTFS中的最大文件名长度(Windows XP和Windows Vista)?
- Vim for Windows -我输入什么来保存和退出文件?
- 我如何从包含绝对文件路径的字符串中获得文件名?
- 给定文件系统路径,是否有一种更短的方法来提取没有扩展名的文件名?
- 路径组件的命名标准是什么?
- .c vs .cc vs .cpp vs .hpp vs .h vs .cxx