1
我想用Groovy腳本將文件從一個位置複製到另一個位置。我發現拷貝後複製的文件比原始文件大幾個數量級。 經過一些試驗和錯誤,我找到了正確的方法來複制,但我仍然困惑,爲什麼它應該更大。複製後文件大得多。字節
def existingFile = new File("/x/y/x.zip")
def newFile1 = new File("/x/y/y.zip")
def newFile2 = new File("/x/y/z.zip")
new File(newFile1) << new File(existingFile).bytes
new File(newFile2).bytes = new File(existingFile).bytes
如果你運行這段代碼,newFile1會比existingFile大得多,而newFile2將是大小existingFile相同。 請注意,這兩個zip文件之後都是有效的。
有誰知道爲什麼會發生這種情況?我是否錯誤地使用了第一個副本?或者在我的設置中有點奇怪?
運行此代碼之前,y.zip是否已經存在? '''方法將指定的字節加到文件末尾,而'x.bytes = y'將覆蓋文件。而且由於ZIP格式可以容忍壓縮文件前面的垃圾(以允許自解壓縮存根等),因此您將ZIP數據附加到的任何文件都將成爲有效的壓縮文件。 –
謝謝伊恩!這似乎是問題。我的代碼中存在一個循環多次的錯誤,一遍又一遍地複製文件。因爲我使用<<運算符,所以它一遍又一遍地附加到文件中。 – rifboy
很高興幫助,我已經重新發布我的評論作爲答案。 –