文件删除的机理与方法

专题快递

我们知道,从DOS时代的DEL命令开始,文件删除就是我们最常用的操作了。一般人都认为删除文件是非常简单不值一提的操作。但电脑中的文件删除,特别是在Windows系统下的文件删除可不是我们想象的这么简单。如何让删除的文件不转入回收站?如何保护重要的文件不被误删除?怎样恢复被删除的文件?如何彻底删除绝密文件……总之,文件删除的学问可真不小呢!

文件删除的机理

文件删除是一个很简单的操作,但它的机理却不是一两句话可以讲清楚的,我们必须要先了解下面两方面的知识:

1.文件的存储

我们知道,电脑中的文件一般是保存在一定的介质中,如磁盘、磁带等,目前我们最常用到的主要是软盘、硬盘、光盘等。下面笔者主要以我们日常用得最多的硬盘为例,介绍一下文件存储的机理。
硬盘驱动器是一种采用磁介质的数据存储设备,数据存储在密封于洁净的硬盘驱动器内腔的若干个磁盘片上。这些盘片一般是在以铝为主要成分的片基表面涂上磁性介质所形成,在磁盘片的每一面上,以转动轴为轴心、以一定的磁密度为间隔的若干个同心圆就被划分成磁道(track),每个磁道又被划分为若干个扇区(sector),数据就按扇区存放在硬盘上(如(图1)所示)。在每一面上都相应地有一个读写磁头(head),所以不同盘片的所有相同位置的磁道就构成了所谓的柱面(cylinder)。传统的硬盘读写都是以柱面、磁头、扇区为寻址方式的(CHS寻址)。硬盘在上电后保持高速旋转(5400rpm以上),位于磁头臂上的磁头悬浮在磁盘表面,可以通过步进电机在不同柱面之间移动,对不同的柱面进行读写。硬盘上的数据按照其不同的特点和作用大致可分为五部分:MBR区、DBR区、FAT区、DIR区和DATA区。

图1
图1

硬盘的第一个扇区(0道0头1扇区)被保留为主引导扇区(MBR区)。在主引导区内主要有两项内容:主引导记录和硬盘分区表。主引导记录是一段程序代码,其作用主要是对硬盘上安装的操作系统进行引导;硬盘分区表则存储了硬盘的分区信息。我们比较熟悉的是FAT(File Allocation Table文件分配表)区,在解释文件分配表的概念之前,我们先来谈谈簇(cluster)的概念。多个连续的扇区组成一个簇。文件占用磁盘空间时,基本单位不是字节而是簇。簇的大小与磁盘的规格有关,一般情况下,软盘每簇是一个扇区,硬盘每簇的扇区数与硬盘的总容量大小有关,可能是4、8、16、32、64……同一个文件的数据并不一定完整地存放在磁盘的一个连续的区域内,而往往会分成若干段,像一条链子一样存放。这种存储方式称为文件的链式存储(如(图2)所示)。硬盘上的文件常常要进行创建、删除、增长、缩短等操作。这种操作做得越多,盘上的文件就可能被分得越零碎(每段至少是1簇)。但是,由于硬盘上保存着段与段之间的连接信息(即FAT),操作系统在读取文件时,总是能够准确地找到各段的位置并正确读出。
图2
图2

在我们的Windows平台普遍应用的三种文件系统是FAT(16位文件分配表),FAT32(32位文件分配表)和NTFS(NT文件系统)。在FAT文件系统中,每个磁盘都分为固定大小的簇。最小簇容量是512字节,而每一个大点的簇容量是前者的两倍,最大达到32KB。FAT记录连接簇一起组成了一个文件,文件的目录记录包含了第一簇的索引位置。那一簇的FAT记录包含着下一簇的索引地址,并依此类推。文件的最后一簇的FAT记录含有一个特殊的文件结尾码。未使用的簇和有缺陷的簇都有它们自己的特殊编码作标记。FAT32文件系统几乎完全一样,但是簇更加小。
前面讲到,文件在硬盘上的保存是以簇为单位存储的。一般说来,一个文件在硬盘上的存储并不是连续存放的(特别是硬盘进行比较频繁的读写文件后),所以为了防止同一文件存储区块的杂乱无章,文件系统会在该文件存放的最开始的一个簇(俗称文件头)的簇尾指明存放该文件的下一个簇的位置,该文件存放的最后一个簇(俗称文件尾)则记录了文件的结束标记。这样当我们要对该文件进行读取操作时,这个文件就会像一串链子一样被一个一个依次串了起来,我们才能读到这些分别存储于不同簇的整个文件。

2.文件怎样被删除

很多人会想当然地以为,我们删除文件时,系统会把我们删除文件的内容全部清除,即把对应的磁盘上的区块全部改写回“0”。其实这种想法是错误的,试想一下,如果我们删除一个较大(如几百MB)的文件将要花费多长的时间,这样的系统工作效率将会是多么的低下。
事实上,当我们删除文件时,系统只是在该文件存放的最开始的一个簇(即文件头)上做了一个删除标记,后面链接的簇仍旧保存着原文件的内容。当然,对于这些带有删除标记的文件,我们在操作系统下不借助于专门程序或软件是不能看到的,并且当你再次往硬盘中写入其他资料时,系统会自动覆盖这些被标记为删除的文件内容,也就是把这些还保存有被删除文件信息的区块改写入新的信息。这一点可以这样理解,磁盘是一块黑板,文件删除并不是将“黑板”上保存该文件信息的区块“擦”干净,等待下一次的重新写入,而只是将“黑板”上存放的不要的信息的区块头上打上一个叉,告诉大家这些信息是不要的,有新的信息要写入时可以直接写在它上面。换句话说,文件删除其实只是对被删除文件作了一个删除标记,而被你删除的文件内容其实会一直保存下去直到你往硬盘中写入了其他内容将它们覆盖为止。

文件删除的方法

1.DOS下的DEL与DELTREE命令

DOS系统包含有三个重要文件,其中,Command.com是最重要的一个。DEL命令就是该文件的一部分,是DOS系统的内部命令,它的作用就是用于删除文件,它的使用方式是在命令提示符后键入DEL,后跟要删除文件的文件名。在实际应用中,我们经常将它配合通配符(“*”和“?”)使用,用于删除多个文件,DEL是我们DOS操作系统中应用得较多的操作之一。
DELTREE命令和DEL命令略有差别,它主要用于删除目录及目录中的全部文件,但它是一个外部命令,也就是说你使用这条命令时,必须指出该命令所在的路径。它的使用方法是在命令提示符后键入DELTREE,后跟要删除的目录路径。
在DOS中,DEL和DELTREE都是比较危险的命令,使用时应引起注意,否则可能会破坏磁盘上的有用文件。在Windows时代,这些DOS命令也并不是毫无用武之地,特别是在系统出错不能进入Windows操作界面时,你还不得不借助它们进行操作。另外,当要删除一些Windows下的系统文件或文件夹时,如要在Windows ME中删除用于系统还原的“_restore”文件夹以节省硬盘空间时,你只能在关闭了系统还原功能后,重新启动到DOS状态下用DELTREE命令删除它。这是Windows下的删除操作无法替代的。

2.Windows的回收站

从Windows 95操作系统开始,我们的Windows系统中就出现了一个回收站。那么回收站到底是如何工作的呢?事实上,回收站只是系统在我们的硬盘上留出的一片空间,Windows系统自动给这片空间建立了一个名为“RECYCLED”的具有“隐藏”属性的文件夹(位于每个硬盘分区的根目录下),用于存放删除掉的文件,只有当我们将回收站内的文件再次删除或执行清空回收站命令后,这些文件才会被删除掉,而我们在桌面上看到的“回收站”,只是这个文件夹的快捷方式。在Windows系统中,当我们将文件删除时,文件其实只是被转移到了磁盘中这个叫“RECYCLED”的文件夹中,以防备万一你需要“回收”(如果文件是通过MS-DOS命令或从软盘等可移动介质删除的文件,则不送入回收站)。这种设计的好处是不言而喻的,但也有一些问题,如果你删除的文件内容包括有重大的商业秘密或个人隐私,而你又没有及时清空回收站的话,别人很容易从你的回收站中“捡”出这些有价值的文件,另一方面,这种删除文件只是将文件由一个文件夹转移到另一个文件夹,其实并没有给你的磁盘腾出任何空间。
要想真正删除这些文件,你可以采用清空回收站。如只希望删除“回收站”中的部分文件,请按住 Ctrl 键,然后单击要删除的每个文件,然后,在“文件”菜单上,单击“删除”即可。上面的操作是最常使用的,但一个删除操作要分两个步骤才能完成,让人感觉太繁琐了。下面笔者介绍两种方法改进回收站的工作,让Windows可以直接地删除文件:
(1)回收站的设置
前面说过,回收站其实相当于一个系统文件夹,我们可以通过对它属性的设置达到直接删除文件的效果。方法是用鼠标右键点击桌面上的回收站图标,在右键菜单中选择“属性”,在(图3)对话框中选中“删除时不将文件移入回收站,而是彻底删除”,确认退出即可;另一种设置方法是在属性对话框中选择“全局”标签,将回收站最大空间百分比的滑杆拖到0%的位置,因为Windows默认回收站最大的空间为磁盘空间的10%,设置成0%以后,无论你删除多大的文件都不会移动到回收站中。当然如果你的磁盘上有多个分区,可以考虑选中“所有驱动器均使用同一设置”方便你的操作。

图3
图3

(2)功能键删除法
在实际操作中,我们有时可能只是希望删除文件不放入回收站,而绝大多数情况还是要保持回收站功能,这时你可以不对回收站属性进行设置,而采用功能键删除。方法为:当你确定要删除某一文件时,可选中该文件,按住Shift键并同时按下Del键,这样删除的文件将不会移动到回收站;而当你并不确定时不要按住Shift键删除,这样删除的文件还是会移动到回收站,以防万一你要恢复文件。
前面介绍了我们最常用的两种文件删除方法,事实上DOS状态下的命令删除方法和Windows下删除文件并清空回收站后的效果完全一样,也就是将磁盘上原存储该文件的第一个簇做了一个删除标记,原文件内容还存在,虽说你可以通过一些专门的程序或工具软件把原文件恢复回来,但万一你再往磁盘中写入任何内容,你的文件将可能被覆盖掉而再也找不回来,所以,对于自己还有利用价值的文件或重要的系统文件,还是有必要进行文件保护,以防被自己或他人无心删除,造成重大损失。