[英]In java: Take snapshot of a directory and restore it
是否有一個庫可以獲取文件夾,獲取其內容的快照,進行一些修改,然后直接從java程序(即不是從命令行)將其恢復到以前的狀態?
編輯 :基本上,我正在處理一個非常大的文件夾:80mb,~7000個文件。 我想只恢復盡快修改的文件。 只復制一切看起來很費時間。
我不知道你想要什么的非標准庫,但你可以嘗試將目錄的內容復制到一個臨時目錄中,並在完成后將其復制回來(並刪除臨時目錄)。
要進行編輯:您必須找到一些方法來跟蹤或“標記”已修改的文件。 也許用這樣的“flag”屬性擴展文件類? 您可以將所有文件保存在內存中,但如果這些目錄變得太大,您將不得不擔心內存不足。
是啊! 有足夠的API功能來做到這一點!
你想拍一個遞歸快照嗎?
我很喜歡groovy語法:
currentDir.eachFileRecurse{ file ->
...}
不完全是Java,但不那么令人頭痛......
public void before(String origDir, String tmpDir) {
try {
Runtime.getRuntime().exec("cp -pr " + origDir + " " + tmpDir).waitFor();
} catch (IOException err) {
...
}
}
public void after(String origDir, String tmpDir) {
try {
String rndDir = createRandomName();
Runtime.getRuntime().exec("mv " + origDir + " " + rndDir).waitFor();
Runtime.getRuntime().exec("mv " + tmpDir + " " + origDir).waitFor();
Runtime.getRuntime().exec("rm " + rndDir);
} catch (IOException err) {
...
}
}
我來看看apache-commons IO庫 。 我特別使用DirectoryWalker,它非常方便地遞歸檢查目錄的內容。
查看目錄(和子目錄)以進行更改,累積它們,然后在要反轉更改時,僅復制更改的文件。
參見例如:
http://twit88.com/blog/2007/10/02/develop-a-java-file-watcher/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.