Windows文件名字长度244

文件名称最大长度为什么是244个字符,而不是255个?

看很多文章提到了以下内容:

  • 目录+文件: 260个字符(带结束符‘\0’)
  • 目录: 248个字符(带结束符‘\0’)
  • 文件: 256个字符(带结束符‘\0’)

但是经过实际测试,比如说在C盘的根目录下,手动创建文件无论是英文字母还是中文字符都只能创建244个字符(注意是字符,不是字节),比较疑惑为什么不是255个。

原来是因为在资源管理器中创建文件的时候还需要为8.3文件名保留12个字符,所以最大文件名称就成了:

260-1(‘/0’)-3("C:\")-12(8.3格式文件名)=244

8.3格式文件名

8.3格式通常指较旧的Windows操作系统或DOS的文件命名格式。
“8”是指文件名或目录名的主体部分小于等于8个字节;
“3”是指文件名的扩展名部分小于等于3个字节;
8.3文件名的有效字符不包括空格等特殊字符;
若不符合以上限制则会以"~"作延长名称如"Program Files"会变成"Progra~1"
若同一文件夹有相似的名称,末端的数值则会自动递增

8.3短文件名格式规范是DOS+FAT12/FAT16时代遗留下的老规矩,
自从Windows95开始(其实据说从Windows for Groups 3.11开始),
Windows就已经能支持长文件名,但是为了向前兼容,特别是文件系统兼容性,
FAT文件系统均强制执行“为长文件名提供8.3兼容格式的短文件名”的特性。

因此你会看到,在FAT16/32文件系统上:
目录"program files"同时还拥有一个8.3规范的"PROGRA~1"短名称;
而文件"元素周期表.exe"也同时拥有一个"元素周~1.exe"的短名称。
[这有一点像类UNIX系统下的hardlink,一个对象拥有两个引用方式。]

如:

vbs中 同一语句使用长名如下:
WshShell.Run """D:\Program Files\Notepad++\notepad++.exe """&name,1, false
使用8.3命名规则如下:
WshShell.Run "D:\Progra~1\Notepad++\notepad++.exe """&name,1, false

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值