Windows文件名长度限制

本文详细介绍了Windows 7系统中文件路径及名称的最大长度限制,包括文件路径加文件名的总长度不超过260个字符,单独文件路径不超过248个字符,以及文件名不超过256个字符的情况,并通过实例说明如何处理超过长度限制的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考:https://social.technet.microsoft.com/Forums/windows/en-US/53779044-d453-458b-b8c4-96d41711ea69/file-name-too-long-cannot-copy?forum=w7itprogeneral

参考:https://fresky.github.io/2015/10/13/story-about-windows-file-name/

参考:https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file#maximum-path-length-limitation

 

win7环境通常模式下:

path+filename: 260个长度是作为文件目录长度+文件名的长度限制之和(带结束符‘\0’)。

path: 248个长度是作为文件目录的长度限制(带结束符‘\0’);

filename: 256个长度通常作为文件名称的长度限制(带结束符‘\0’),不算结束符的话为255个字符;

 

1. 例如-建立文件:path+filename触发限额260

所在文件夹的长度为50,则文件名的长度被限制在210以内,超出的话会被进行截断。

2. 例如-建立文件夹:path触发限额248

在c:\下建立文件夹(目录前缀"c:\"占据3个长度),新建文件夹名称限制在245以内,超出的话会被进行截断。

3. 例如-建立文件:filename触发限额256

在c:\下建立文件(目录前缀"c:\"占据3个长度),新建文件夹名称限制在256以内,超出的话会被进行截断。

 

如果在程序中的话,超出长度的话MoveFile/CopyFile会返回错误,处理失败。

 

例子1:建立文件

1.  我手动在C:\建立一个文件,使用280个长度进行重命名,实际生成的文件名长度却是256个长度(带字符串结束符’\0’)

新建时使用280长度(带‘\0'结束符):1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklm.txt

实际生成文件名,共计256个长度(带字符串结束符’\0’):

256长度(带‘\0'结束符):1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqrstuvwxyz123

 

2. 把这个文件往”C:\temp”目录copy的时候

报错: 文件名对目标文件夹可能过长,您可以缩短文件名并重试,或者尝试路径较短的位置。

意味着,

  a. 要么我们把文件名改短一些,

  b. 要么copy 的目录长度短一些,例如向”D:\”复制就没会有问题。

 

例子2:建立文件夹

1. 我手动在C:\建立一个文件夹,使用280个长度进行重命名,实际生成的文件夹名称却是带字符串结束符’\0’共245个长度

新建时使用280长度(带‘\0'结束符):1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopq

实际生成目录名称: 共计245个长度(带字符串结束符’\0’)

245长度(带‘\0'结束符):1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqr

和父目录“c:\"连接在一起形成的目录长度正好为248长度(带‘\0'结束符)

c:\1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqr

 

2. 在该目录下,再尝试建立目录时,失败-报错建立路径过长

意味着,

   a. 总目录长度已经达到了最大限制,不能再往下建立目录

 

3. 另外,在该目录下新建文件,利用同样字符串,可以建立一个12长度的文件(带‘\0'结束符),超出会被截断

   a. 建立的文件名(带'\0'长度12):1234567890a

   b. 文件路径前缀(带‘\’长度248) + 文件名长度12 = 260 达到限额

 

Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu  转载请标明来源 

 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

春夜喜雨

稀罕你的喜欢!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值