在 Groovy 中将字符串转换为 InputStream

Posted

技术标签:

【中文标题】在 Groovy 中将字符串转换为 InputStream【英文标题】:Convert String to InputStream in Groovy 【发布时间】:2018-11-03 15:10:19 【问题描述】:

给定一个字符串:

String xml = "<test/>";

如何在 Groovy 中将其转换为 InputStream

目前我使用:

IOUtils.toInputStream(xml, StandardCharsets.UTF_8)

它可以工作,但我正在寻找一些在 Groovy 中更短且无依赖的方法。

我当然知道 answer 用于 Java,但它涉及到丑陋的 ByteArrayInputStream 创建。我正在寻找解决该问题的 GDK 方法。

【问题讨论】:

How do I convert a String to an InputStream in Java?的可能重复 IOUtils.toInputStream() 完全是 new ByteArrayInputStream() 的东西。 GDK 没有添加任何类似于InputStream.getText() 的将String 转换为InputStream 的方法。实际上使用ByteArrayInputStream 是最简单直接的方法。 【参考方案1】:

与 Groovy 没有太大关系,纯 java:

InputStream stream = new ByteArrayInputStream( xml.getBytes( 'UTF-8' ) )

【讨论】:

Groovy 有text 方法可以将InputStream 转换为String,所以我正在寻找类似的速记,而没有ByteArrayInputStream【参考方案2】:

如果你在类路径上有org.apache.tools.ant.types.resources.StringResource,它就变成了:

new StringResource(xml).inputStream

它包含在 cglib 中,所以如果你做模拟,也许你可以在测试中使用上面的简写。

【讨论】:

以上是关于在 Groovy 中将字符串转换为 InputStream的主要内容,如果未能解决你的问题,请参考以下文章

在 Groovy 中将整数转换为十六进制字符串

在 Groovy 中将字符串 XML 片段转换为文档节点

如何在groovy中将十六进制转换为字符?

如何在groovy中将java.lang.String转换为json

无法在 groovy 中转换为漂亮的字符串

将字符串变量转换为列表 [Groovy]