Groovy,重载<< ZipOutputStream 上的运算符

发布于 2024-11-09 18:54:25 字数 734 浏览 0 评论 0 原文

基于 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 的信息..:-)

based on Google I managed to write a little Groovy script that packs a zip just as I needed.

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()

It works, but I would like to know how does Groovy figure out what to call on lines entry << "foobar" or entry << new FileInputStream(..). As I see ZipOutputStream is a Java class, its javadoc doesn't contain any method, that could be called with even String or InputStream arguments. Could you explain me how does it work and where is it documented? I'd like to know more about Groovy.. :-)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

扛刀软妹 2024-11-16 18:54:25

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 method leftShift on the object.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文