操作系统观察,文件夹的层数竟然不是无限的?

前言:

     起因是因为组长发现我们的一个项目文档提交的时候,文件夹下的.exe可行性文件不可以运行(点击就是圆圈加载的画面,完全没用),但是放到上一层文件夹却可以运行了。于是,充满好奇的我,找到了答案(一下操作系统为Windows10):


一、解答疑问(以下解答,均出自度娘):

     文件夹的层数不是无限制的,因为windows系统只支持256位的文件命名,也就是说,整个文件路径最多不能超过256个字符(即256字节)。如果路径名太长,系统就会提示你“无法创建文件夹‘新建文件夹’,文件名或扩展名过长”(当然,我们这里出现的情况就没有提示,而且,大多数情况是不会提示的!!!)。如果用汉字来命名文件夹或文件的话,因为汉字是双字节字符,可以建立的文件夹还要更少一些。为什么是最多256个字符呢? 这与编写windows语言之一的汇编语言有关系,是由寻址寄存器决定的(0-255),所以是256个。

     我做了一下试验并经过计算,得到的结论是windows最多可建立118层文件夹。

     在C盘根目录下建立一文件夹,第一层文件夹名是200个0,第二层是30个0,第三层就只能输入12个0了。这三层文件夹的名字就是242个字符了,再加上盘符“C”“:”及分隔用的三个反斜杠“/”,一共是247个字符。

     247比256还差9个字符,为什么不是256呢?原来windows系统把硬盘盘符上一层的“我的电脑”也作为文件路径的一部分了。“我的电脑”是8个字节,再加上“我的电脑”与C盘中间的一个反斜杠分隔符“/”,正好凑够256这个数了。

那么,到底可以建多少层文件夹呢?

     假设每一层文件夹都只用一个字符命名,理论上来说可以建127层文件夹(因每层文件夹中间要有/分隔),但实际上到不了这么多。因为,我前面说过,“我的电脑”要占8个字符(虽然你在路径里面看不到,但系统里是把它算在内的),“C:”要占两个字符,所以整个文件路径开头必须被占用的字节数就有“我的电脑/C:/”这12个字节。

     不仅如此,当你新建文件夹时,“新建文件夹”这几个字也要占10字节的位置。就拿我图中的例子来说,如果第三层文件夹是10个0,按说下面还可以再建一层文件夹(一个/,一个0),但由于“新建文件夹”占10个字节,所以下一层是无法创建的。

     所以这样的话,我们真正能建立的文件夹层数在计算时就要考虑到路径前头和后头必占的字节数。前头是“我的电脑/C:/”这12个字节,后头是“新建文件夹”占10个字节,中间还有234个字节位置可用。按单字符文件夹名计算,在中间位置我们可以建立117层文件夹,再加上最后面的“新建文件夹”那一层,一共是118层。

     118层,这就是可以建立的最多文件夹层数。

     建立这么多层文件夹,如果最后建立的文件夹不改名的话,实际上在最下一层也就无法放文件了,只有把“新建文件夹”改成少于10个字节的名字,下面才能再放进文件。

     如果是英文windows系统的话,可以建立的文件夹层数还要更少,因为“My Computer”“New Folder”比“我的电脑、新建文件夹”还要多3个字节。也许只能建116层文件夹。

 


二、简单的观察验证:

     上面度娘的回答已经很详细了,这里你可以试验以下:

      我们随便在哪个磁盘创建文件夹,在文件夹里面放入

      这里用于测试。然后将文件夹重命名为多个字符,总的路径大于256个字节(你可以将字符放到记事本,用属性查看字符大 小)。这里我的文件路径已经大于了256个字节:

     然后我们点击exe可执行文件,就会发现运行不了!!!如果将文件路径(文件名变小),就发现可以运行了!!!

 


总结:

     当我们启动可执行文件的时候,系统会从磁盘中读取到程序地址,并放入内存,然后获得CPU执行。可是这里因为路径太长,系统无法读取到内容,所以就一直处于打不开的状态。如果有更好的解释,欢迎评论交流哦~~~

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

threecat.up

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值