我正在设计一个数据库表,它将保存上传文件的文件名。windowsxp或Vista使用的NTFS中文件名的最大长度是多少?
当前回答
我把这个加到上面批准的答案中。
需要说明的是,人们之所以认为它是255-260个字符,是因为Windows资源管理器只支持这一个字符。如果文件名比这个长,它就会出错。然而,程序可以读取和写入更长的文件名(这就是Explorer最初抱怨的长度)。在这种情况下,微软的“推荐修复”是在编写该文件的原始程序中打开该文件并重命名它。
其他回答
根据新的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
Windows XP NTFS的199,我刚查过。
这不是理论,而是我在笔记本电脑上尝试的结果。可能会有缓解作用,但它不会让我把它变大。
我想知道是否有其他的设定限制了这一点?你自己试试吧。
它有257个字符。 准确地说: NTFS本身的最大文件名长度为几千个字符(大约30,000个左右)。 但是,Windows对路径+文件名规定了260的最大长度。驱动器+文件夹至少占用3个字符,因此最终有257个字符。
在Windows 11(在NTFS驱动器中)是带扩展名的236
为了测试,重命名一个文件与以下名称,并尝试增加一个字符:
123456789012345678901012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678 9012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890.txt
NTFS中的长度为255。NTFS $Filename属性中的NameLength字段是一个没有偏移量的字节;这将产生0-255的范围。
文件名本身可以在不同的“命名空间”中。到目前为止,有:POSIX, WIN32, DOS和(WIN32DOS -当文件名可以是DOS名称时)。(由于字符串有长度,它可以包含\0,但这会产生问题,并且不在上面的名称空间中。)
因此,一个文件或目录的名称最多可以是255个字符。在Windows下指定完整路径时,需要在路径前加上\\?\(或者使用\\?\UNC\server\share for UNC路径)将此路径标记为扩展长度路径(~32k字符)。如果您的路径较长,您将不得不沿途设置您的工作目录(由于进程范围设置的副作用)。
推荐文章
- 在Python中构建完整的路径文件名
- 在Windows上更改文件的情况?
- 如何从PHP的完整路径中获得文件名?
- NTFS中的最大文件名长度(Windows XP和Windows Vista)?
- Vim for Windows -我输入什么来保存和退出文件?
- 我如何从包含绝对文件路径的字符串中获得文件名?
- 给定文件系统路径,是否有一种更短的方法来提取没有扩展名的文件名?
- 路径组件的命名标准是什么?
- .c vs .cc vs .cpp vs .hpp vs .h vs .cxx
- 如何使用bash脚本替换文件名中的空格
- 将字符串转换为有效的文件名?
- 使用Ruby从文件夹中获取所有文件的名称
- 在bash中提取不带路径和扩展名的文件basename
- 获取文件夹中所有文件的文件名
- 如何手动创建文件。Windows中的(点)前缀?例如,.htaccess