2009-07-28 50 views
2

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

谢谢!

代码:

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

您可以创建一个临时目录,需要复制到该目录下的文件,然后拉链起来...意味着你知道这些文件没有被使用,然后... – Jon 2009-07-28 02:46:35

+0

我试过,但是然后复制失败。 – Autobyte 2009-07-28 11:10:11

回答

1

所以,我目前使用的解决方案是忽略正在使用的,因为他们始终是相同的文件......我把它们放在一个排除条款中,见下图:

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

我仍然乐意提供更好的解决方案!

0

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

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

1

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

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

vshadow的-p C:

装入阴影副本作为新的驱动器号:

vshadow的-EL = ShadowCopyId,Z:

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

当您完成后,删除卷影副本:

vshadow的-ds = ShadowCopyId

相关问题