如何将 ByteArrayOutput 流写入 groovy 中的文件?

Vis*_*hal 3 groovy fileoutputstream bytearrayoutputstream try-with-resources

在Java中,我可以轻松地使用以下代码将a写入ByteArrayOutputStream文件。但是,try-with-resources在 Groovy 中不起作用:(

ByteArrayOutputStream byteArrayOutputStream = getByteStreamMethod();
try(OutputStream outputStream = new FileOutputStream("thefilename")) {
    byteArrayOutputStream.writeTo(outputStream);
}
Run Code Online (Sandbox Code Playgroud)

我一直在尝试关注http://mrhaki.blogspot.co.uk/2009/11/groovy-goodness-readers-and-writers.html等链接 ,所以在这里回答IntelliJ 错误 - java: try-with-resources 是-source 1.6 错误中不支持。即使在项目设置中选择了 1.7 JDK

但我无法想到 Groovy 语法,可以将上面的 java 代码块编写为。您能在这里稍微指导一下如何在 Groovy 中编写上面的 java 代码块吗?

PS:我使用的是Groovy v2.4.12

Szy*_*iak 5

替代方法是:

  • .withClosable(Closure cl)
  • .withOutputStream(Closure cl)

在您的情况下,以下示例会将数据写入ByteArrayOutputStream给定的File

final ByteArrayOutputStream os = new ByteArrayOutputStream()
os.withCloseable {
    it << "Lorem ipsum dolor sit amet".bytes
}

new File("/tmp/lorem.txt").withOutputStream { stream ->
    os.writeTo(stream)
}

println new File("/tmp/lorem.txt").text
Run Code Online (Sandbox Code Playgroud)

在最后一行,我们打印/tmp/lorem.txt文件的当前内容:

Lorem ipsum dolor sit amet
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你。