Groovy,重载<< ZipOutputStream 上的运算符
基于 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 <<新的 FileInputStream(..)
。正如我所见,ZipOutputStream 是一个 Java 类,它的 javadoc 不包含任何可以使用 String 或 InputStream 参数调用的方法。您能解释一下它是如何工作的以及它记录在哪里吗?我想了解更多关于 Groovy 的信息..:-)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
Groovy 向一些基本 Java 类添加了额外的方法,以便以更groovy的方式使用它们。有关其他方法的完整概述,请参见 http://groovy.codehaus.org/groovy-jdk。在您的情况下,方法
leftShift
添加到类 输出流。 Groovy 还重载了<<
运算符,因此与调用对象上的leftShift
方法相同。Groovy adds additional methods to some basic Java classes in order to use them in a more groovy way. For a complete overview af the additional methods look at http://groovy.codehaus.org/groovy-jdk. In your case, the method
leftShift
was added the class OutputStream. Groovy also overloads the<<
operator, so it's the same as calling the methodleftShift
on the object.