举一个简单的例子:定义一个记录类型 Type Dat Used As Boolean Title As String * 8 Data As Long End Type Dim MyData(1 To 100) As Dat这就相当于一个数据体,无序的。你储存的数据在这里面不分先后。唯一的标示是成员Title。以后向这个数据体写入时,可以用:For i=1 to 1000 If MyData(i).Used = False Then MyData(i) = True <你的写入代码> Exit For End If Next i删除就更简单了: MyData(j).Used=False 这样,就把第j个数据删掉了。你看,Title和Data成员并未改动,只是Used标记为未使用(False)。 如果你又写入数据,可能会查到这个MyData(j)。如果轮到它,那么这个数据将被更新。
FAT列表的格式我不太清楚,好像是记录了文件名和物理位置。当你调用一个文件时,系统先打开文件分区表,找到这个文件的物理位置,然后从硬盘的这个位置读出数据。(如果我记错了,还请高手纠正。谢)
Type Dat
Used As Boolean
Title As String * 8
Data As Long
End Type Dim MyData(1 To 100) As Dat这就相当于一个数据体,无序的。你储存的数据在这里面不分先后。唯一的标示是成员Title。以后向这个数据体写入时,可以用:For i=1 to 1000
If MyData(i).Used = False Then
MyData(i) = True
<你的写入代码>
Exit For
End If
Next i删除就更简单了:
MyData(j).Used=False
这样,就把第j个数据删掉了。你看,Title和Data成员并未改动,只是Used标记为未使用(False)。
如果你又写入数据,可能会查到这个MyData(j)。如果轮到它,那么这个数据将被更新。
8~10字节: 扩展名
11字节: 属性项
22~23字节:时间域
24~25字节:日期域
26~27字节:文件起始簇域
28~31字节:文件长度
(摘自:电脑报)这种技术应该是恢复文件分区表的技术。可以查阅电脑报,上面有详细介绍。
到了window时代,删除文件的工作由回收站接管,删除文件时,是把文件路径指向回收站,在dos状态下进入到回收站的隐藏目录,就会看到系统把这些文件的文件名都做了一定的处理。而一旦清空了回收站,系统所做的事估计可能与dos时代还是差不多的这样用工具软件就还是可以恢复文件了,当然,一些专业得恢复软件还有检查被删除文件得完好性等功能,那就不得而知了。
题外话:基于这个原理,还出现了一些“文件彻底删除器”之类的软件,这些软件在删除掉文件后,还往这些文件原本所占的磁盘区域里填零或者一些垃圾数据,经过这样一处理,那么那些恢复软件也无能为力了,从而达到“彻底删除”的目的。