我使用的是java库,想要调用导出数据的方法。
此方法有两个变体:一个使用String参数作为目标文件名,另一个接受OutputStream对象并使用OutputStreamWriter写入它。
我想使用第二种方法,并能够将OutputStream返回到String中,这样我就可以随心所欲地做任何事情。
我不确定它实际上是否可能,但是当我发现clojure.core / with-out-str时,我有一些希望它是可能的,但是我不知道怎么做使用它。
是否可以将OutputStream参数从Clojure传递给Java方法并将写入的数据作为String返回?
感谢。
编辑:
实际上,类构造函数接受一个OutputStream参数,一个方法通过它写入并关闭它。 希望这会有所帮助。
答案 0 :(得分:4)
@ xsc的评论指出可能重复,我仍然会按照他自己发布答案的建议来保留对Clojure细节的参考。
这是我最终的结果:
(def baos (java.io.ByteArrayOutputStream.))
(-> (SomeClass. baos) .export)
(String. (.toByteArray baos) (. java.nio.charset.Charset defaultCharset))
有关Charset的更多信息,请参阅this answer中的评论。