line-seq

added
1.0

ns
clojure.core

type
function

(line-seq rdr)

Returns the lines of text from rdr as a lazy sequence of strings.
rdr must implement java.io.BufferedReader.

                ;; Count lines of a file (loses head):
user=> (with-open [rdr (clojure.java.io/reader "/etc/passwd")]
         (count (line-seq rdr)))


            
                (import '(java.io BufferedReader StringReader))

;; line terminators are stripped
user=> (line-seq (BufferedReader. (StringReader. "1\
2\
\
3")))
("1" "2" "" "3")

;; empty string gives nil
user=> (line-seq (BufferedReader. (StringReader. "")))
nil

            
                ;; read from standard input
user=> (nth (line-seq (java.io.BufferedReader. *in*)) 2)
  #_=> 0
  #_=> 1
  #_=> 2
"2"