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可以相同,也可以不同)

通过阅读本文,希望你对回收站的运行方式有更深刻的理解.

posted @ 2025-11-30 23:27  吕了了  阅读(0)  评论(0)    收藏  举报