2013-04-24 75 views
2

我正在尋找實施撤消/重做文件/文件夾功能編輯/刪除/移動等使用Java。那可能嗎 ?撤消文件/文件夾操作使用java

詳細信息:我看用javaFileWatcher給定的文件夾中,我得到的觀察者,如果任何文件/文件夾中創建/修改/刪除/重命名的消息。現在我想如果任何用戶刪除/創建任何文件/文件夾,我將能夠使用Java撤消它。任何人都可以幫忙。

注意:我正在使用windows

在此先感謝。

回答

3

不可能,刪除是最終的,沒有像在操作系統中的回收站,你必須自己實現它。

1

作爲一個開創性的想法,請看Command pattern。這通常是如何實現撤銷/重做的。這個想法是,你需要將對操作「重要」的所有內容都存儲到一個對象中,並將它們存儲在一個有序集合中。

在你的情況下,你想監視FS而不是你自己的數據模型的事實使事情變得非常困難。然而,如果你能夠提供冗餘的數據存儲,那麼假設我可以做到這一點。 (我建議你閱讀有關git SCM工作方式的信息,我的意思是它將所有內容都存儲在一個.git文件夾中,並且能夠從其存儲的壓縮數據中恢復其所謂的工作目錄中的任何以前的狀態。)

事實上,如果你可以讓git加入你的程序,那麼它會容易得多。我認爲你有一個git repo在你想監督的目錄中初始化,然後每次你被通知一些FS改變時,你可以要求git(git status)告訴你哪些文件實際發生了改變。即使刪除的文件可以恢復,然後使用簡單的git命令。

這遠遠不是您的問題的完整答案,但我可能提出了一些想法。祝你好運。

+0

將git與mac一起工作,你可以請給一些ref如何開始與git,感謝您的好主意 – NoNaMe 2013-04-24 11:22:09

+0

嗨! git肯定能在mac,linux,windows上很好地工作。實際上確保安裝了git,然後從Java程序中調用git命令並解析結果。看到這個例子:http://stackoverflow.com/questions/4157303/how-to-execute-cmd-commands-via-java如果你不熟悉git,然後選擇谷歌給你隨機的git教程。基本上,你在你想要監控的文件夾中發出'git init',然後最初你必須'git add .'所有文件和'git commit -m「初始狀態」'第一個版本。然後改變一下,看看'git status' .. – jabal 2013-04-24 11:27:49