admin 管理员组文章数量: 887021
参考:https://social.technet.microsoft/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/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/chunyexiyu 转载请标明来源
版权声明:本文标题:Windows文件名长度限制 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1726193864h913606.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论