Arn*_*aud 3 java outputstream clojure clojure-java-interop
我正在使用一个 java 库并想调用一个导出数据的方法。
此方法有两种变体:一种具有用作目标文件名的 String 参数,另一种接受 OutputStream 对象并使用 OutputStreamWriter 写入该对象。
我想使用第二种方法并且能够将 OutputStream 返回到一个字符串中,这样我就可以用它做任何我想做的事情。
我不确定它实际上是否可行,但是当我发现 clojure.core/with-out-str 我有一些希望它是可能的,但是我不确定如何使用它。
是否可以将 OutputStream 参数从 Clojure 传递给 Java 方法并将写入的数据作为字符串取回?
谢谢。
编辑:
实际上,类构造函数接受一个 OutputStream 参数,一个方法通过它写入并关闭它。希望这可以帮助。
@xsc 的评论指出可能重复,但我仍然会按照他的建议自己发布答案,以保留 Clojure 细节的参考。
这是我的结果:
(def baos (java.io.ByteArrayOutputStream.))
(-> (SomeClass. baos) .export)
(String. (.toByteArray baos) (. java.nio.charset.Charset defaultCharset))
Run Code Online (Sandbox Code Playgroud)
有关 Charset 的更多信息,请参阅此答案中的评论。