前阵子,我在网上下载了一个数据恢复软件,他可以把你删除的资料找回来,但是格式化的除外,我想知道他的原理,那为大虾能否告诉我啊!
先在这里谢谢了!

解决方案 »

  1.   

    好像删除文件只是从FAT文件列表中删去这个文件的记录,并不是真正删除了这个文件。
      

  2.   

    如果进行了文件写操作,写到这个被删除的文件的硬盘物理位置,就会把这个文件的内容覆盖,因为FAT文件列表认为这个文件不存在。就像一个栈的指针指向8时,第9层的数据被认为丢失,虽然它还在数组(栈)中
      

  3.   

    你用过快速格式化吗?其实他只是删除了文件分区表中的全部信息。这样,那个傻瓜的操作系统就认为这个硬盘中没有文件。
    FAT列表的格式我不太清楚,好像是记录了文件名和物理位置。当你调用一个文件时,系统先打开文件分区表,找到这个文件的物理位置,然后从硬盘的这个位置读出数据。(如果我记错了,还请高手纠正。谢)
      

  4.   

    举一个简单的例子:定义一个记录类型
      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)。如果轮到它,那么这个数据将被更新。
      

  5.   

    回复人: leiren(renlei) ( ) 信誉:100 每个文件在磁盘上的结构(纯DOS模式下,Windows未知):0~7字节:  文件名
    8~10字节: 扩展名
    11字节:    属性项
    22~23字节:时间域
    24~25字节:日期域
    26~27字节:文件起始簇域
    28~31字节:文件长度
    (摘自:电脑报)这种技术应该是恢复文件分区表的技术。可以查阅电脑报,上面有详细介绍。
      

  6.   

    如果我要找回删除的资料 ,是不是要在数据区里去找,你们说删除文件只是把文件分区表里文件和物理位置改掉了,如果要找回资料好象dos命令中有一个反删除命令可以恢复。但是如果要编程的话,是否只能正对硬盘的数据区呢?
      

  7.   

    在dos时代,当你删除文件甚至快速格式化磁盘的时候,系统并不真正删除文件,而只是在文件分配表(fat)中简单的把这个文件的文件名首字符用一个特殊的字符代替,用pctool、norton等工具软件查看,就可以看到这个特殊字符有点象“Q”,只是那一撇在上面。删除文件后,系统再检查磁盘空间的时候,遇到这个特殊字符就不再把这个文件当成一个有效的文件,而允许其他的程序使用它所占有的空间那么就是说,你删除文件以后,如果这个文件腾出来的空间还没有被其他程序修改过,那么你就可以借助一些工具软件或特殊命令(例如dos的undelete命令)把这些文件找出来,并要求你输入一个字符以替换刚才所说的那个特殊字符。于是,这个文件又重现了。
    到了window时代,删除文件的工作由回收站接管,删除文件时,是把文件路径指向回收站,在dos状态下进入到回收站的隐藏目录,就会看到系统把这些文件的文件名都做了一定的处理。而一旦清空了回收站,系统所做的事估计可能与dos时代还是差不多的这样用工具软件就还是可以恢复文件了,当然,一些专业得恢复软件还有检查被删除文件得完好性等功能,那就不得而知了。
    题外话:基于这个原理,还出现了一些“文件彻底删除器”之类的软件,这些软件在删除掉文件后,还往这些文件原本所占的磁盘区域里填零或者一些垃圾数据,经过这样一处理,那么那些恢复软件也无能为力了,从而达到“彻底删除”的目的。