【问题标题】:groovy zipping a directory with files in usegroovy 使用正在使用的文件压缩目录
【发布时间】:2009-07-28 02:43:51
【问题描述】:

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

谢谢!

代码:

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

【问题讨论】:

  • 您可以创建一个临时目录,将所需的文件复制到该目录,然后将其压缩...意味着您知道这些文件没有在使用中...
  • 我试过了,但是复制也失败了。

标签: groovy directory zip


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

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

    vshadow -p C:

    将卷影副本安装为新的驱动器号:

    vshadow -el=ShadowCopyId,Z:

    然后驱动器 Z: 将成为 C: 的副本,这应该允许您打开文件。

    完成后,删除卷影副本:

    vshadow -ds=ShadowCopyId

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      • 这就是我的想法,无论如何,被锁定的文件对于备份 firefox 环境并不重要 - 谢谢!
      猜你喜欢
      • 2012-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多