有没有办法通过EOF读取高清数据?

时间:2010-12-01 01:00:07

标签: c windows hard-drive data-recovery

有没有办法读取文件的数据但是继续读取文件末尾的硬盘上的数据?对于普通的文件I / O,我可以使用fread(),但很明显,这只会读到文件的末尾。如果我在Windows计算机上添加我需要它,这可能是有益的。

所有我用谷歌搜索的方法都可以得到关于EOF的无关主题的结果,例如人们遇到普通I / O问题。

我的理由是,我不小心删除了我正在处理的文本文件中的部分文本,这是一整天的工作。我搜索了一堆文件恢复的东西,但这一切似乎都是关于恢复已删除的文件,我的问题是文件仍然存在,但没有它的一些信息,我希望一些数据仍然直接存在在当前标记的文件结束之后,在其他地方既没有碎片,也没有声明或以其他方式被覆盖。由于我找不到一个特别有用的程序,我希望我可以快速为它做点什么(我明白,根据所涉及的内容,这可能不像重做工作那样可行,但是我希望不是这样的。)

据我所知,虽然我可能不正确(不确定,这就是我寻求帮助的原因),但有3种可能性。

最糟糕的三个:我必须查找允许直接访问整个硬盘驱动器的Windows API函数(类似于它的内存函数,也许是我经验丰富的函数)并扫描整个内容以获取数据我仍然可以从文件中访问,然后继续查看它之后的内容。

第二:我可以得到一个指向该文件的指针,然后我仍然需要获得HD的原始访问权限,但至少有一个指向该文件的指针?

最好的三个:只需打开文件进行写入访问,寻找到最后,然后写一些方法通过EOF来获取更多空间,但首先希望Windows在将数据移交给我之前不会清理数据所以我得到的垃圾数据是那个地方以前的数据,实际上我正在寻找什么?如果那么简单,这将是非常棒的,但我害怕测试它,因为如果它失败了我会丢失数据,所以希望其他人已经知道了。有问题的PC正在运行Vista家庭高级版,如果这对任何了解Windows的血腥细节的人都很重要。

这三者中的任何一个看起来似乎都合理吗?不管是也可以,我也是开放(并且渴望)其他建议,特别是那些比我愚蠢的想法更好的建议,特别是如果他们指出了用于完成工作的特定功能。

另外,如果其他人真的听说过一个恢复程序,它不仅可以恢复已删除的文件,而且实际上适用于这种情况,并且是免费且值得信赖的,那也是有效的。

提前感谢您的任何帮助。

2 个答案:

答案 0 :(得分:3)

您应该获得一个实用程序,用于扫描硬盘驱动器的可用空间并从中恢复数据,例如PhotoRecforemost。但是请注意,如果你一直在使用机器(甚至是网页浏览,这将在你的缓存中创建文件),数据可能已被覆盖。 不要将恢复工具保存在同一个硬盘上,甚至使用同一台PC下载它们;从另一台计算机上获取它们并将它们保存到USB设备,然后从该设备运行它们。

至于问题的概念内容,文件是抽象对象。除了(取决于实现)之外,没有数据“过去的eof”可能直到下一个文件系统/磁盘“blocksize”的多个。此外,您的编辑器可能(很可能)通过截断文件并从头开始编写所有内容来“保存”文件,这意味着旧存储和新存储之间不一定存在任何对应关系。

答案 1 :(得分:0)

你的问题没有多大意义 - 根据定义,在EOF之后文件中没有任何内容。根据您的进一步描述,您似乎想要读取在文件使用的最后一个字节之后发生在磁盘上的任何内容,这可能是随机垃圾(未使用的空间)或可能是其他文件。但在任何一种情况下,这都不是“EOF之后的数据”,它只是磁盘上的数据,而不是文件的一部分。它甚至可能是同一个文件的其他部分,如果文件系统碰巧以这种方式布局它的数据 - 一些文件系统以看似随机的方式在磁盘上分散块并找出哪些字节属于哪些文件需要理解文件系统元数据。