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

标签 groovy fileoutputstream try-with-resources bytearrayoutputstream

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

ByteArrayOutputStream byteArrayOutputStream = getByteStreamMethod();
try(OutputStream outputStream = new FileOutputStream("thefilename")) {
    byteArrayOutputStream.writeTo(outputStream);
}

我一直在尝试关注类似 http://mrhaki.blogspot.co.uk/2009/11/groovy-goodness-readers-and-writers.html 的链接 和 所以在这里回答IntelliJ error - java: try-with-resources is not supported in -source 1.6 error. Even though in project settings 1.7 JDK is selected

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

PS:我使用的是 Groovy v2.4.12

最佳答案

Groovy 的 替代方案方法如下:

  • .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

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

Lorem ipsum dolor sit amet

希望有帮助。

关于groovy - 如何将 ByteArrayOutput 流写入 groovy 中的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48746375/

相关文章:

groovy - 使用 StreamingMarkupBuilder 在标签内生成 CDATA

Jenkins 管道 boolean 参数评估

java - OutputStream.write 太慢

grails - 使用HtmlUnit和Release插件进行Grails 2.0依赖项解析

java - 如何将 ArrayList<MyObject> 保存到文件中?

java - 文件输出时遇到问题

java - 当 try block 中的多行抛出异常时,使用 Try-With-Resources 而不是 finally block

java - 使用 try-with-resources java 关闭数据库连接

java - 在 try-with-resources 声明期间抛出异常

json - 有没有一种方法可以在Grails中使用Marshaller将JSON字符串解析为自定义对象