c - 有没有办法读取EOF之后的高清数据?

标签 c windows hard-drive data-recovery

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

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

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

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

三者中最糟糕的是:我必须查找允许直接访问整个硬盘驱动器的 Windows API 函数(也许类似于其内存函数?我有过使用过的那些函数)并扫描整个硬盘以查找需要的数据。我仍然可以访问该文件,然后继续查看它后面的内容。

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

三者中最好的:只需打开文件进行写访问,查找到末尾,然后编写一个超过 EOF 的方法来占用更多空间,但首先希望 Windows 在将数据交给我之前不会清除数据这样我就得到了垃圾数据,这些数据是该位置之前的数据,而这实际上正是我正在寻找的数据?如果这么简单的话那就太棒了,但我不敢测试它,因为如果失败我会丢失数据,所以希望其他人已经知道了。如果这对了解 Windows 详细信息的人来说很重要的话,那么这台电脑正在运行 Vista Home Premium。

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

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

预先感谢您的帮助。

最佳答案

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

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

关于c - 有没有办法读取EOF之后的高清数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4320312/

相关文章:

windows - 批处理脚本(bat 或 cmd)- 符号前的额外空格(或自动转义符号)

vb.net - 如何从 vb.net 中访问驱动器的原始数据?

c - 在 Linux 上分配期间如何记录堆栈?

c - 我什么时候应该提供 #defined 宏来在 Linux 内核中声明或初始化变量?

c - container_of 宏中的 char* 有什么用?

windows - mysqldump 在 Windows 上的备份文件名中带有日期和时间

c++ - ShellExecuteW 在 Windows 8.1 上运行不正常?

c - 如何在 Arduino 串口打印对 AT 命令的响应?

c - pread() 中的奇怪行为?

crash - 笔记本电脑损坏的硬盘可以转换为外部HD吗?我可以恢复其数据吗?