3

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

此方法有两种变体:一种带有用作目标文件名的 String 参数,另一种接受 OutputStream 对象并使用 OutputStreamWriter 写入它。

我想使用第二种方法,并且能够将 OutputStream 恢复为字符串,这样我就可以用它做任何我想做的事情。

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

是否可以从 Clojure 将 OutputStream 参数传递给 Java 方法并将写入的数据作为字符串取回?

谢谢。

编辑:

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

4

1 回答 1

5

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

这就是我最终得到的结果:

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

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

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

于 2014-05-14T09:06:30.997 回答