The slurp
funtion in Clojure can be used to read the contents of a file and return it as a string value. We can use several types as argument for the function. For example a string argument is used as URI and if that is not valid as a file name of the file to read. A File
instance can be used directly as argument as well. But also Reader
, BufferedReader
, InputStream
, URI
, URL
, Socket
, byte[]
and char[]
. As an option we can specify the encoding used to read the file content using the :encoding
keyword. The default encoding is UTF-8 if we don't specify the encoding option.
In the following example we use the slurp
function in different use cases. We use a file named README
with the content Clojure rocks!:
(ns mrhaki.sample.slurp (:require [clojure.java.io :as io] [clojure.test :refer [is]]) (:import (java.io File))) ;; slurp interperts a String value as a file name. (is (= "Clojure rocks!" (slurp "files/README"))) ;; Using the encoding option. (is (= "Clojure rocks!" (slurp "files/README" :encoding "UTF-8"))) ;; We can also use an explicit File object. (is (= "Clojure rocks!" (slurp (io/file "files/README")))) (is (= "Clojure rocks!" (slurp (File. "files/README")))) ;; We can also use an URL as argument. ;; For example to read from the classpath: (is (= "Clojure rocks!" (slurp (io/resource "data/README")))) ;; Or HTTP endpoint (is (= "Clojure rocks!" (slurp "https://www.mrhaki.com/clojure.txt")))
Written with Clojure 1.11.1.