2

有没有办法读取文件的数据,但在文件末尾继续读取硬盘上的数据?对于普通文件 I/OI 可以只使用 fread(),但显然,它只会读取到文件末尾。如果我补充说我需要在 Windows 计算机上使用它可能会有所帮助。

我所有的谷歌搜索都是为了找到与 EOF 无关的主题的结果,例如人们遇到正常 I/O 的问题。

我的理由是,我不小心删除了我正在处理的文本文件中的部分文本,而这是一整天的工作。我用谷歌搜索了一堆文件恢复的东西,但似乎都是关于恢复已删除的文件,我的问题是文件仍然存在但没有它的一些信息,我希望其中一些数据仍然直接存在在当前标记的文件结尾之后,既不会在其他地方分段,也不会被声明或以其他方式覆盖。由于我找不到专门帮助解决此问题的程序,我希望我能迅速弥补它(我理解,根据所涉及的内容,这可能不像重做工作那样可行,但是我希望情况并非如此)。

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

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

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

三者中的佼佼者:只需打开文件进行写访问,搜索到最后,然后通过 EOF 写一条方法以获取更多空间,但首先希望 Windows 在将数据交给我之前不会清理数据,以便我获取垃圾数据,这是该位置的先前数据,实际上是我正在寻找的数据?如果它那么简单,那就太棒了,但我不敢测试它,因为如果它失败我会丢失数据,所以希望其他人已经知道了。如果这对了解 Windows 血腥细节的人来说很重要,那么有问题的 PC 正在运行 Vista Home Premium。

这三个中的任何一个看起来都合理吗?无论是或否,我也乐于接受(并且渴望)其他建议,尤其是那些比我愚蠢的想法更好的建议,尤其是如果它们带有用于完成工作的特定功能的方向。

此外,如果其他人真的听说过一个恢复程序,它不仅可以恢复已删除的文件,而且实际上可以在这种情况下工作,而且它是免费且值得信赖的,那也可以。

提前感谢您的任何帮助。

4

2 回答 2

3

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

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

于 2010-12-01T01:10:25.100 回答
0

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

于 2010-12-01T03:15:54.727 回答