74为什么回收站里面的文件名可以是相同的?
为什么回收站里面的文件名可以是相同的?
众所周知,在Windows系统中,我们是无法在同一个文件夹里面创建文件名称完全相同的文件的.否则会导致文件的混乱,系统崩溃.
你可能会说,我在同一个文件夹里面可以创建两个相同文件名的文件啊!

其实,它们的文件后缀,也就是文件扩展名,是不同的.比如,这两个文件其实一个是"百年孤独.txt",另一个是"百年孤独.pdf".这不过,文件的扩展名被隐藏了而已.文件扩展名也是文件名称的一部分,让电脑知道这是什么格式的文件.
如何显示文件扩展名?
对于Windows 10:
- 打开文件资源管理器
- 点击"查看"
- 勾选"文件扩展名"
对于 Windows 11:
- 打开文件资源管理器
- 点击"查看->显示"
- 文件扩展名
回收站究竟是什么?
我们在桌面上,可以看见回收站这个垃圾桶图标.
点开回收站,我们可以看见我们删除的文件,包括如下元素:
- 名称
- 原位置
- 删除日期
- 大小
- 项目类型
- 修改类型
这些属性记录了被删除的文件曾经的"故事".
事实上,"回收站"的本质,其实是一个特殊的文件夹.
删除文件到回收站是一种文件的移动操作.
清空回收站才算是真正的把文件删除了.
如果我们想要直接删除文件而不放到回收站,我们可以使用快捷键shift+delete.
回收站的机制是什么?
我们按下delete删除文件到回收站的过程,究竟发生么什么?
究竟为什么"回收站"这个文件夹里的文件名字可以完全相同?

首先要知道,"回收站"这个文件夹在电脑中的位置.
事实上,每一个分区的根目录里面都有一个回收站的文件夹,名字叫做"Recycle.bin"(recycle意思是回收,bin的意思是垃圾桶.)
我们需要显示隐藏的文件,并且显示受操作系统保护的文件之后,才能看见这个隐藏的很深的文件夹.


原来位于C盘的文件,删除的时候放在C盘的Recycle.bin里面,原来位于D盘的文件,删除的时候放在D盘的Recycle.bin里面,桌面上的"回收站"点开之后显示的其实是所有分区的Recycle.bin里面的文件集合.
点开这个文件夹,可以看见里面有一个"回收站".再点开它,就可以看见我们删除的文件了.

但是,这还是无法解释,为什么回收站里面的文件名称是可以完全相同的.
回收站的真正回收机制
祖法不能变.同一文件夹里的文件名无论如何也不能相同.这是一切的前提.
我们所看见的回收站,只不过是被表象蒙蔽了而已.
Windows文件资源管理器向我们隐瞒了太多.想要透过表象看本质,我们是用另外一个文件管理浏览工具,优秀的压缩软件:7-zip.
7-zip官网下载:
https://www.7-zip.org/
安装后,点击开始菜单,打开7-zip,打开C盘->Recycle.bin

我们看见一长串奇怪的字符,和文件资源管理器的并不相同.文件资源管理器的Recycle.bin打开看见的应该是回收站.
所以,没错,这个一长串字符的文件夹就是回收站文件夹的本体名字.
这是回收站的GUID,全局唯一标识符.在你的电脑里,只有回收站能拥有这个名字(这个GUID).他是唯一的.
点开这个"长串"文件夹,我们又看见了不一样的东西:

这是我删除的文件???
别急,我们有规律可循.
首先,回收站里面有两个被删除的文件,名字是111.txt和111.txt(名字相同).

在7-zip里面,有四个.txt文件,名为
$R9QSMPQ.txt
$I17W367.txt
$I9QSMPQ.txt
$R17W367.txt
仔细观察,这四个文件,除了$后面的字母R和I不同,剩下的文件名部分是两两相同的.
所以我们推测,这个长串名文件夹里的两个部分文件名相同的txt文件决定了回收站里显示的一个文件.
继续深入探究.我们点击打开$后面是R的文件,打开的就是我们删除的文件.
我们点击打开$后面是I的文件,打开的是一个半乱码的文件.

从这个"半乱码"的文件中,我们以可以看出一些端倪.
这里面,那个C : \ U s e r s \ l l l \ D e s k t o p \ 1 1 1 . t x t 是他所记录的被删除的111.txt这个文件的曾经的位置.
使用HxD16进制编辑器可以得知,前面的空白和乱码记录的是这个111.txt文件的大小,原名称和删除时间.
真相逐渐浮出水面.
我们可以得出结论:
我们在删除文件的时候,系统进行了两个主要操作,一个是把文件移动到回收站文件夹,另一个是把这个文件随机重命名.重命名的格式为$RXXXXXX.并且,针对被删除的文件,系统又产生了一个新的文件.
这个新产生的文件同样位于回收站文件夹里,记录了被删除文件的大小,原名称和删除时间.这个新产生的文件名字应该为$IXXXXXX,后面的XXXXXX必须与$RXXXXXX中的XXXXXX严格相同.系统通过读取$IXXXXXX文件的内容,得到了被删除文件的文件名,原名称,大小,删除时间等,并把这些信息列出在我们平常所看见的回收站里面.
所以,即使删除的文件的文件名称相同,回收站文件夹里面的文件名由于删除时的重命名操作,也变得不同.
这便是系统删除文件到回收站的机制.
验证结论
-
我们删除一个$I开头的文件,回收站里相应的文件不被显示.
-
我们删除一个$R开头的文件,回收站里相应的文件不被显示.
-
我们更改$I开头文件内部的数据,回收站里相应的文件不被显示.
-
我们删除一个xyz.exe软件到回收站,7-zip里可见回收站的文件夹里有一个$IXXXXXX.exe和一个$RXXXXXX.exe.$RXXXXXX.exe可以正常运行,是原来的软件.
$IXXXXXX.exe是一个小的文件,使用16进制编辑器读取,可以发现里面记录了这个软件曾经的位置等.
所以,回收站里面文件名称的本质结构应该为:
$IXXXXXX.扩展名1
$RXXXXXX.扩展名1
$IAAAAAA.扩展名2
$RAAAAAA.扩展名2
$IBBBBBB.扩展名3
$RBBBBBB.扩展名3
................................
(扩展名1,2,3可以相同,也可以不同)
通过阅读本文,希望你对回收站的运行方式有更深刻的理解.
浙公网安备 33010602011771号