问题描述
|
基于Google,我设法编写了一个Groovy脚本,根据需要打包了一个zip文件。
ZipOutputStream zipOutput = new ZipOutputStream(new FileOutputStream(\"${uid}.pufi\"));
ZipEntry mainentry = new ZipEntry(\'main.xml\')
zipOutput.putNextEntry(mainentry)
zipOutput << \"mainmainmain\"
zipOutput.closeEntry()
ZipEntry manifentry = new ZipEntry(\'manifest.xml\')
zipOutput.putNextEntry(manifentry)
zipOutput << new FileInputStream(options.manifest)
zipOutput.closeEntry()
它可以工作,但是我想知道Groovy如何找出在entry << \"foobar\"
或entry << new FileInputStream(..)
行上要调用的内容。正如我所见,ZipOutputStream是一个Java类,它的javadoc不包含任何方法,甚至可以使用String或InputStream参数来调用。您能解释一下它是如何工作的,并在哪里记录?我想进一步了解Groovy .. :-)
解决方法
Groovy向一些基本的Java类添加了其他方法,以便以更常规的方式使用它们。有关其他方法的完整概述,请参见http://groovy.codehaus.org/groovy-jdk。在您的情况下,方法
leftShift
已添加到类OutputStream。 Groovy还重载了<<
运算符,因此它与在对象上调用方法leftShift
相同。