有没有更简单的方法将BufferedReader更改为字符串?

unj*_*nj2 1 java clojure

现在我有

;; buffer->string: BufferedReader -> String
(defn buffer->string [buffer]
 (loop [line  (.readLine buffer) sb (StringBuilder.)]
     (if(nil? line)
        (.toString sb)
        (recur (.readLine buffer) (.append sb line)))))
Run Code Online (Sandbox Code Playgroud)

这太慢了.

编辑:

  • 我有一个BufferedReader

  • 当我尝试做(str BufferedReader)它给了我"java.io.BufferedReader@1ce784b"

  • 上面的循环太慢了,我的内存空间不足.

cgr*_*and 5

(clojure.contrib.duck-streams/slurp* your-buffer) ; is what you want
Run Code Online (Sandbox Code Playgroud)

您的代码很慢,因为缓冲区未被暗示.