[英]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.