如何使用C#恢复已删除的文件?

4

我正在尝试找回一些丢失的.jpg图片。这里有一个.bat文件,可以设置我的情况的简化版本。

md TestSetup
cd TestSetup
md a
cd a
echo "Can we find this later?" > a.abc
del a.abc
cd..
rd a

需要打开文本文件的代码是什么?我实际上正在寻找以类似方式处理的.jpeg文件。
更多细节:我正在尝试从以前的一键备份中恢复图片文件,其中目录和文件已被删除,并且所有内容都保存在备份中具有单个字符名称并且每个文件具有相同的三个字母扩展名。有一个当前备份,但他们需要查看以前删除的文件(或至少是.jpg文件)。
这是我尝试解决问题的方法:C#代码

当您运行批处理文件时,删除的文件是否会出现在回收站中? - MusiGenesis
1
你非得自己编写这个应用程序吗?市面上有许多免费的已删除文件恢复工具可以做到你所需要的。 - Paul Sasik
MusiGenesis:不,当批处理文件以这种方式删除它时,它会执行Matthew提到的操作,在目录项中用00h替换文件名的第一个字符。 - Fred
psasik: 我很想找到一个便宜或免费的实用程序来完成这个任务。虽然我拒绝为残缺不全的软件付费,特别是当我不知道它是否能正常工作时。单字母目录和文件名以及更改的文件扩展名使得这项任务比应该的要困难得多。 - Fred
1个回答

8
据我所知,大多数文件恢复工具实际上读取磁盘上的低级文件系统格式,并试图拼凑已删除的文件。这是可行的,因为至少在FAT文件系统中,已删除的文件仍然驻留在指定目录的扇区中(只是以不同的第一个字符标识为“已删除”)。新文件可能会覆盖这些已删除的条目,从而使文件无法恢复。这只是一点理论知识。

虽然有当前备份,但他们需要查看之前删除的文件(或至少是.jpg文件)。

除非在您想要恢复的时间点上有该文件的备份,否则我认为您将很难在不进行低级文件系统读取的情况下获取该文件。即使进行了这样的尝试,如果已经进行了足够的修订(或者它不像FAT那样简单的文件系统),您也可能无法找回文件。

它位于FAT32驱动器上,我已经使用十六进制编辑器进入并验证了仍然存在许多已删除的目录和文件。由于有几百个单字母名称(已删除)目录条目可用,我认为我需要迭代恢复每个目录,然后检查其中的每个已删除目录和文件条目,并检查每个文件的前4个字节以查看是否为有效的.jpg文件。 - Fred
没错,大多数文件恢复软件所做的就是这个繁琐的过程。我强烈建议编写一个代码解决方案(如果你还不知道,一个简单的FAT32驱动程序可以在几个小时内完成),因为用十六进制编辑器手动操作可能会更加痛苦。 - Matthew Iselin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接