Make Clojure recognize and isolate the line in a file

I am trying to get Clojure to read a file, put the first line in a variable, and the rest in another variable. I cannot seem to find out how to do this and would love if anyone could give me a heads up,

Answers


;; for Clojure 1.1
(require '[clojure.contrib.duck-streams :as io])
;; for bleeding edge
(require '[clojure.java.io :as io])

(with-open [fr (io/reader "/path/to/the/file")]
  (let [[first-line & other-lines] (doall (line-seq fr))]
    ;; do stuff with the lines below...
    ...))

Update: Ah, just realised that I took "the rest" from the question to mean "the rest of the lines in the file", thus in the above other-lines is a seq of all the lines in the file except the first one.

If you need "a string containing the rest of the file's contents" instead, you could use the above code, but then (require '[clojure.contrib.str-utils2 :as str]) / (require '[clojure.string :as str]) (depending on the version of Clojure you're using) and say (str/join "\n" other-lines) to rejoin other-lines into one string; or, alternatively, use something like this:

(let [contents (slurp "/path/to/the/file")
      [first-line rest-of-file] (.split #"\n" contents 2)]
  ...)

Clojure head:

(require '[clojure.string :as str])
(let [[f & r] (str/split (slurp "foo.txt") #"\n")]
   ... do something with f and r ...)

ED: Somehow I failed to recognize MichaƂ's answer and thought about deleting it, but since it's a little different and shows clojure.string.split, I won't.


Need Your Help

how to get (and set) variables inside a ruby class?

ruby class

I update this question to better reflect what I have problems to grasp. The example below kind of work but how can I access the Sub class then I have defined it inside the Base class? Should it no...

How to give the path as a parameter or a variable in powershell

powershell

I have written a powershell script. the code has paths related to only my PC.