曾经将硬盘中的数据误删除了。使用类似DISK RECOVERY的软件将文件恢复了。就算是高级格式化之后的硬盘也可以恢复。当然恢复后的文件的文件名信息丢失,而且也会将多个文件合并成一个文件。——或许这也是不可避免的。
稍微思考了一下,文件删除,高级格式化只是对FAT表进行操作。真正的文件数据并没有删除。而对文件的判断,是根据不同文件的格式相关的特征代码来进行的。问题:
我也想走一下相关技术路线,用C#做一个硬盘数据区扫描程序,将FAT表中未登录文件的数据读取出来。并保存。不知道应该如何操作?
文件读写已经懂了。关键是要进行全硬盘数据区扫描。请大虾给个方法,没有方法给个思路,没有思路给个方向~~~~多谢~~~
稍微思考了一下,文件删除,高级格式化只是对FAT表进行操作。真正的文件数据并没有删除。而对文件的判断,是根据不同文件的格式相关的特征代码来进行的。问题:
我也想走一下相关技术路线,用C#做一个硬盘数据区扫描程序,将FAT表中未登录文件的数据读取出来。并保存。不知道应该如何操作?
文件读写已经懂了。关键是要进行全硬盘数据区扫描。请大虾给个方法,没有方法给个思路,没有思路给个方向~~~~多谢~~~
参考:
http://blog.csdn.net/zgke/archive/2008/09/26/2981855.aspx
[DllImport("kernel32.dll", SetLastError = true)]
private static extern SafeFileHandle CreateFileA(string lpFileName, uint dwDesiredAccess, uint dwShareMode, IntPtr lpSecurityAttributes, uint dwCreationDisposition, uint dwFlagsAndAttributes, IntPtr hTemplateFile); CreateFileA("\\\\.\\D:", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, IntPtr.Zero, OPEN_EXISTING, 0, IntPtr.Zero);然后根据文件分配表.找文件把.
参考
http://blog.csdn.net/iiprogram/archive/2008/03/26/2220472.aspx
fat vfat fat32 应该是公开,可以网上查
ntfs 微软没有公开,不过,可以参考一下这个
http://www.linux-ntfs.org/doku.php
这两种方法都需要了解文件系统,各种不同的文件系统差异很大。
首先纠正上面错误的说法
在进行数据恢复的时候,对文件的判断并不是根据特征码来判断的,是对文件分配表的记录来判断的,对于NTFS来说就是根据MFT
来判断的,这样恢复出来的文件才是正确的。如果根据特征码判断的话,恢复出来的一般是不正确的,除非一些特别小的纯文本文件。因为一个文件在硬盘上保存是被分成很多个分散块的,很多分散块合并起来才是个完整的正确的文件。
这些信息是记录在文件分配表的(对NTFS 是MFT)。
所以要想搞这个软件需要先学习文件系统,这也就是从网上下载的软件都是区分文件系统格式的,当然了,很多时候用软件扫描出来的文件是不对的,这时候就需要人工分析才可以,但这仅仅限于恢复不多文件的情况下,如果文件多了,恢复起来相当费时间。http://www.sosdb.com
"对文件的判断并不是根据特征码来判断的" 我过去用过相关软件,里面的确是根据文件特征码进行判断的。因为如果进行了格式化,MFT或者FAT中的信息已经被删除了。还如何通过这个信息来进行恢复呢?