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