【问题标题】:Undo file/folder operation using java使用java撤消文件/文件夹操作
【发布时间】:2013-04-24 10:37:32
【问题描述】:

我希望使用 java 实现用于编辑/删除/移动等的撤消/重做文件/文件夹功能。这可能吗?

详细信息:我正在使用javaFileWatcher 观看给定的文件夹,我会从观察者那里收到一条消息,说明是否有任何文件/文件夹已创建/编辑/删除/重命名。现在我想如果任何用户删除/创建了任何文件/文件夹,我将能够使用 java 撤消它。任何人都可以帮忙。

注意:我使用的是windows

提前致谢。

【问题讨论】:

    标签: java


    【解决方案1】:

    不可能,删除是最终的,没有像操作系统那样的回收站,你必须自己实现它。

    【讨论】:

      【解决方案2】:

      作为启动想法,请查看Command pattern。这通常是撤消/重做事情的实现方式。这个想法是,您可以将关于操作的所有“重要”内容存储到单个对象中,然后将它们存储在有序集合中。

      在您的情况下,您想要监控 FS 而不是您自己的数据模型这一事实使事情变得非常困难。但是,如果您能负担得起冗余数据存储,那么我认为可以假设它可以完成。 (我建议您阅读 git SCM 的工作方式。我的意思是,它将所有内容存储在一个 .git 文件夹中,并且它能够从它存储的压缩数据中恢复其所谓的工作目录中的任何先前状态。)

      实际上,如果您可以将 git 加入到您的程序中,那么它会容易得多。我认为您在要监督的目录中初始化了一个 git repo,然后每次收到有关某些 FS 更改的通知时,您都可以要求 git (git status) 告诉您哪些文件实际上已更改。甚至删除的文件也可以使用简单的 git 命令恢复。

      这远不是您问题的完整答案,但是我可能已经给出了一些想法。祝你好运。

      【讨论】:

      • git 也可以与 mac 一起使用,您能否提供一些参考如何使用 git,谢谢您的好主意
      • 嗨! git 肯定会在 mac、linux、windows 上很好地工作。实际上,请确保已安装 git,然后您可以从您的 Java 程序调用 git 命令并解析结果。例如:stackoverflow.com/questions/4157303/… 如果您不熟悉 git,请选择 google 为您提供的随机 git 教程。基本上你在要监控的文件夹中发出git init,然后最初你必须git add .所有文件和git commit -m "initial state"第一个版本。然后改变一些东西,看看git status..
      猜你喜欢
      • 2015-08-12
      • 2011-03-31
      • 1970-01-01
      • 2013-08-27
      • 2011-11-16
      • 2018-10-09
      • 2013-01-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多