有些程序可以从硬盘驱动器中恢复已删除的文件,还可以覆盖可用空间以防止删除的文件被恢复。
覆盖自由空间的行为似乎是可以理解的。该程序创建文件并向其写入任意字节。
然而,当谈到阅读已删除的文件时,我感到难过。据我所知,删除文件只会删除文件系统中的引用,并且恢复程序会搜索公共文件头以确定“自由空间”的哪一部分。可能是一个可恢复的文件。
但是程序如何从不属于文件系统的硬盘中读取数据?我使用或阅读过某些文档的任何语言都允许从硬盘读取磁盘只能打开一个文件 - 这不是空闲空间。
我还要感谢一个从硬盘读取的小例子,可能是C ++,Java或Python。
另外,我是Windows用户。
编辑:这是Java人员提出的:How to access specific raw data on disk from java
答案 0 :(得分:4)
每个操作系统都有block device
的概念 - 硬盘是规范的例子。现在的美妙之处在于,在大多数实现中(包括Windows),这些都可以像文件系统中的文件一样通过引用特殊文件名来打开,这些文件名无效内部文件系统(假定适当的用户权限)。
在Windows上,例如打开\\?\Device\Harddisk0\Partition1
将允许您访问第一个硬盘的第一个分区。通过对此特殊"文件的读取权限,您现在可以在不通过文件系统的情况下读取驱动器的内容,从而可以发现并抢救不再属于该文件系统的对象。文件系统,但尚未被覆盖或修剪。