diff options
-rw-r--r-- | src/clj/clojure/core.clj | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/src/clj/clojure/core.clj b/src/clj/clojure/core.clj index 4c76d9b5..78a7a772 100644 --- a/src/clj/clojure/core.clj +++ b/src/clj/clojure/core.clj @@ -2975,16 +2975,20 @@ [v] (instance? clojure.lang.Var v)) (defn slurp - "Reads the file named by f into a string and returns it." - [#^String f] - (with-open [r (new java.io.BufferedReader (new java.io.FileReader f))] + "Reads the file named by f using the encoding enc into a string + and returns it." + ([f] (slurp f (.name (java.nio.charset.Charset/defaultCharset)))) + ([#^String f #^String enc] + (with-open [r (new java.io.BufferedReader + (new java.io.InputStreamReader + (new java.io.FileInputStream f) enc))] (let [sb (new StringBuilder)] - (loop [c (. r (read))] + (loop [c (.read r)] (if (neg? c) (str sb) (do - (. sb (append (char c))) - (recur (. r (read))))))))) + (.append sb (char c)) + (recur (.read r))))))))) (defn subs "Returns the substring of s beginning at start inclusive, and ending |