使用java撤消文件/文件夹操作

时间:2013-04-24 10:37:32

标签: java

我希望使用java实现undo / delete / move等的undo / redo文件/文件夹功能。这可能吗?

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

注意:我正在使用Windows

提前致谢。

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

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

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

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

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