2009-07-28 296 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

相關問題