Java interop:传递一个OutputStream参数并获取一个String

我正在使用一个Java库,并且想调用一个导出数据的方法。

此方法有两种变体:一种具有用作目标文件名的字符串参数,另一种接受OutputStream对象并使用OutputStreamWriter对其进行写入。

我想使用第二种方法,并且能够将OutputStream取回到String中,这样我就可以随心所欲地执行任何操作。

我不确定它实际上是可能的,但是当我发现clojure.core / with-out-str我有一些希望,但是我不知道如何使用它。

是否有可能从Clojure将OutputStream参数传递给Java方法,并将写入的数据作为String返回?

谢谢。

编辑:

实际上,类构造函数接受一个OutputStream参数,一个方法写入并关闭它。 希望这可以帮助。


@ xsc的评论指出了可能的重复,但我仍然会按照他的建议发布自己的答案,以保留Clojure细节的参考。

这就是我最终的结果:

(def baos (java.io.ByteArrayOutputStream.))

(-> (SomeClass. baos) .export)
(String. (.toByteArray baos) (. java.nio.charset.Charset defaultCharset))

有关Charset的更多信息,请参阅此答案中的注释。

链接地址: http://www.djcxy.com/p/78451.html

上一篇: Java interop: pass an OutputStream argument and get back a String

下一篇: stream of a Process returned by Runtime.exec()