On 17 January 2011 13:48, John Svazic <jsva...@gmail.com> wrote:

> Benny already answered, but here's the common block that I'm using for
> my Clojure submissions:
>
> (import '(java.io BufferedReader FileReader))
> (defn process-file [file-name]
>  (let [rdr (BufferedReader. (FileReader. file-name))]
>    (line-seq rdr)))
>
> (defn my-func [col]
>  ; Do something interesting
> )
>
> (println (my-func (process-file (first *command-line-args*))))
>
> Basically I read the lines of the file into a sequence, then process
> that sequence in my function.  Since I'm only dealing with the first
> parameter passed to my script, a (first *command-line-args*) call is
> equivalent to args[0] in other languages like Java.
>

If you include clojure.contrib.io, you could use read-lines:

(defn read-lines
  "Like clojure.core/line-seq but opens f with reader.  Automatically
  closes the reader AFTER YOU CONSUME THE ENTIRE SEQUENCE."
  [f]
  (let [read-line (fn this [^BufferedReader rdr]
                    (lazy-seq
                     (if-let [line (.readLine rdr)]
                       (cons line (this rdr))
                       (.close rdr))))]
    (read-line (reader f))))

Regards,
Stuart

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to