groovy使用正在使用的文件压缩目录

时间:2009-07-28 02:43:51

标签: groovy directory zip

我正在尝试在groovy程序中压缩整个目录。我已经使用内置的ant目标来压缩目录并且通常这是有效的,除了有时2-3个文件正在使用中我不关心但是邮政编码实际上因为这个而中止 - 关于如何修复的任何想法此?

谢谢!

代码:

def ant = new AntBuilder() 
ant.zip(
    destfile: "C:/temp.zip", 
    basedir: "c:/Temp/"
) 

3 个答案:

答案 0 :(得分:1)

所以我目前使用的解决方案是忽略正在使用的文件,因为它们总是相同的......我把它们放在一个exclude子句中,见下文:

def ant = new AntBuilder() 
ant.zip(
    destfile: "C:/Temp.zip", 
    basedir: "c:/Temp",
    level: 9,
    excludes: "**/file1.dat, **/file2.dat, **/file3.dat"
)

我仍然愿意接受更好的解决方案!

答案 1 :(得分:1)

我不熟悉Groovy或AntBuilder,但我相信您可以使用VShadow程序创建目录的卷影副本,并从那里进行备份。

创建驱动器C的卷影副本:

  

vshadow -p C:

将影子副本装载为新的驱动器号:

  

vshadow -el = ShadowCopyId ,Z:

驱动器Z:将是C:的副本,它应该允许您打开文件。

完成后,删除卷影副本:

  

vshadow -ds = ShadowCopyId

答案 2 :(得分:0)

没有“更好”的解决方案,因为主要问题似乎是你在使用你的应用程序(Firefox)同时压缩其工作文件。

您可以使用ZipOutputStream等实现自己的zip机制,但只要您不关闭Firefox或定期检查所有文件在锁定之前是否锁定,您就会遇到同样的问题。 / p>