Windows文件名长度限制

win7x64位环境:260个长度是作为总的文件名长度限制。例如:所在文件夹的长度为50则文件名的长度被限制在210之下,超出的话会被进行截断。如果在程序中的话,超出长度的话MoveFile/CopyFile会返回错误,处理失败。例子:1.我手动在C:\建立一个文件,使用280个长度进行重命名,实际生成的却是文件名是256个

大家好,又见面了,我是你们的朋友全栈君。

参考: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  转载请标明来源 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/125219.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • FDD 与 TDD LTE区别

    FDD 与 TDD LTE区别虽然国内4G牌照迟迟不见发布,但私底下各大运营商和终端商早已摩拳擦掌,各网用户尤其是备受折磨的中国移动用户也都在期待4G时代的到来。放眼望去,目前在全球81个国家已有213张LTE商用网络,其中FDD-LTE商用网络192张、TD-LTE商用网络11张,而中国4G如箭在弦,被认为是一场由中国移动积极促成的产业大跃进。随着大家不断谈论4G,相关的新名词也不断涌现,包括不同制式的网

    2022年5月30日
    42
  • matlab中doc是什么意思_求和符号在matlab中怎么表示

    matlab中doc是什么意思_求和符号在matlab中怎么表示苹果OSX系统在界面与使用上相比我们熟悉的Windows系统有很大的区别,很多刚接触苹果电脑的朋友会觉得Mac电脑桌面下的Dock栏很酷,使用也很方便。但大多数用户都不知道Dock栏是什么,该如何用好,今天我们将详细为大家介绍下Dock栏使用技巧。Dock栏是什么?Dock栏是苹果Mac电脑OSX系统桌面下方的那那一排快捷操作键,类似于Windows电脑的任务栏,我们可以将一些经常需要用到的应用放…

    2025年10月30日
    4
  • PHP的加密解密字符串函数建议收藏

    程序中经常使用的PHP加密解密字符串函数代码如下:/*********************************************************************函数名称

    2021年12月20日
    40
  • Java sdk安装及配置[通俗易懂]

    Java sdk安装及配置[通俗易懂]1.安装JavaSDK开发环境。首先去官网下载JavaSDK,http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html,下载完成之后,开始安装。点击下一步,安装完成。2.配置JavaSDK环境变量单击“计算机-属性-高级系统设置”,单击“环境变

    2022年7月9日
    23
  • mysql 1062 场景_解决Mysql 主从或主主报1062错误[通俗易懂]

    mysql 1062 场景_解决Mysql 主从或主主报1062错误[通俗易懂]1062错误——主键冲突,出现这种情况就是从库出现插入操作,主库又插入相同的数据,iothread没问题,sqlthread出错处理此种错误一般有两种思路:1、直接跳过错误执行语句2、找到错误执行语句,修复主库2数据https://www.cndba.cn/leo1990/article/2957https://www.cndba.cn/leo1990/article/2957https://ww…

    2022年9月25日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号