【问题标题】:java program which delete file and recover it [duplicate]删除文件并恢复它的java程序[重复]
【发布时间】:2018-12-04 14:09:25
【问题描述】:

这是我从特定文件夹(/home/user)中删除“.txt”文件的代码。但是一旦删除,我不知道如何恢复这些已删除的文件。

请给我一些示例代码(如果可能的话),以实现这一目标。

在java中可以吗?如果是这样,请帮助我(我很乐意使用任何其他语言。)

import java.*;
import java.io.File;
class  CountFiles
{
    public static void main(String args[])
    {
        String dirPath="/home/user";
        File f = new File(dirPath);
        File[] files = f.listFiles();
        int s=files.length;
        System.out.println("Number of files in folder "+s);
        for(int i=0;i <s; i++)
        {
            if (files[i].isFile())
            {
                String FilesName = files[i].getName();
                System.out.println(FilesName);
                if (FilesName.endsWith(".txt") || FilesName.endsWith(".TXT"))
                {
                    boolean success = files[i].delete();
                    vif (!success) throw new IllegalArgumentException("Delete: deletion failed");
                    else System.out.println("file deleted");
                }
                System.out.println("file deleted out side.....");
            }
        }
    }
}

【问题讨论】:

  • 是什么让您认为您应该能够恢复它们?
  • 我知道,这在 java 中是不可能的。 那么你在问什么
  • 唯一可以保证可以完成的方法是在删除之前在某处进行复制。
  • 其他语言可以吗?
  • 你的意思是要从垃圾桶/recycle-bin/中恢复吗???我们通常不认为这是“删除”,因此人们可能无法在这里回答正确的问题。这是可能的,但可能需要一些 jni(“移动到垃圾箱”而不是真正删除并在之后恢复)。如果这对你有用,你首先需要弄清楚你的操作系统如何使用它的回收/垃圾功能。

标签: java data-recovery


【解决方案1】:

是的,在 Java 中是可能的,但是对于低级或特定于操作系统的任务,使用本地语言可能会更好。

以下信息适用于 Java 和其他语言:


如果您可以在文件被删除之前对其进行控制,那么您可以在删除之前简单地复制/备份文件。


如果您想从系统垃圾箱/回收站恢复数据,那么您需要针对每个操作系统的特定解决方案。


但是,如果您无法先备份文件,并且无法访问垃圾文件夹,那么您永远无法 100% 确定您可以恢复数据(有关详细信息,请参阅下面的编辑) .但是,您可以从存储设备中读取原始数据。这是一门极其复杂和先进的学科。如果您必须提出这个问题,那么您不应该在没有先做大量研究的情况下尝试编写代码来完成它。

在继续阅读之前,请参阅此答案,了解如何从存储设备中读取原始字节:How to recover deleted files using Java?

阅读接受的答案后,您还需要考虑:

  • 您可以逐个扇区访问驱动器,但您必须
    针对不同的文件系统(FAT、NTFS、 HPFS 等)
  • 您不能使用文件路径来获取已删除的文件,您需要扫描整个驱动器并有根据地猜测要恢复的内容, 或要求用户输入,以便他们选择要恢复的内容。
  • 任务可能是一项漫长而复杂的任务,您必须解释原始数据以查看它是否是有效的纯文本文件,并找出它的开始和结束。

编辑以包含比尔的评论: 删除文件后,计算机采取的任何进一步操作(包括使用恢复工具)都有可能覆盖您要恢复的数据。最好的解决方案是强制关闭 PC,然后克隆驱动器,以便可以使用克隆在另一台 PC 上进行数据恢复,同时保持原始安全。

【讨论】:

  • 此外,您在删除文件后在系统上执行的任何操作都有可能覆盖其数据,因此此时启动 Java 应用程序是您能做的最糟糕的事情之一。如果它已经在运行了——正如@sorfiend 所说——你已经控制了这个文件,那你为什么不复制它???
  • 我现在明白了恢复的原理(理论上)非常感谢sorifiend和Bill 我现在正在搜索如何通过直接从文件中逐位恢复数据来找到文件的开头和结尾硬盘。
猜你喜欢
  • 2010-12-23
  • 2010-10-19
  • 2020-07-09
  • 2013-08-14
  • 1970-01-01
  • 2015-06-08
  • 2013-06-27
  • 2012-01-05
  • 2014-06-11
相关资源
最近更新 更多