在Windows和C上恢复文件

时间:2015-05-06 21:56:44

标签: c++ c windows

好吧这次我试图在C中编写一个程序从磁盘中恢复已删除的文件,它可能是一个外部磁盘,我有一个想法,而不是我之前在linux上使用过的,它是打开的磁盘作为一种文件并扫描磁盘中所有内容的页眉和文件页脚,重点是我不确定是否允许在Windows上打开磁盘作为文件,基本上我有逻辑如何开发这个程序,但是我不确定如何在windows上实现它,任何人都可以帮我一个忙吗?。

我在linux上用来打开磁盘作为文件的代码是: 编辑:这是我使用的一个例子,它只是为了让你知道我在做什么,我使用的正确语法是下一个:

direccion = ui->linea->text().toLatin1().constData();
f = fopen(direccion,"rb");

我在linux上使用了QT创建者,而direccion变量是一个TextField值,它通过一个打开QFileDialog的按钮函数包含磁盘的文件路径......

我也可以在Windows中使用它吗?

先谢谢你..

2 个答案:

答案 0 :(得分:1)

  

"我在linux上用来打开磁盘作为文件的代码是:"

 File *f = fopen("E:\", "rb");

我严重怀疑你是否曾在任何Linux系统(或Windows)上使用此代码 如果它以任何字符串文字显示,您需要转义反斜杠路径分隔符:

FILE* f = fopen("E:\\", "rb");
                // ^

您提供的用于访问特定磁盘的所有文件系统路径样式都是关于访问Windows文件路径/磁盘。

没有linux文件系统有关于驱动器字符的概念,并且使用的文件路径分隔符值为'/',而不是'\\'

答案 1 :(得分:0)

要恢复已删除的文件,您无法使用fopenfstream::open,因为该文件已被删除。检查函数的返回值或测试流状态。

恢复已删除文件的方法是:

  1. 获取主文件表作为原始数据。
  2. 搜索包含类似于已删除字符串的记录 文件名。
  3. 将主文件表中的条目更改为“未删除”。
  4. 将主文件表写回驱动器。
  5. 以上通常需要特定于平台的API,这在Linux和Windows平台上是不同的。