Thanks Barry, I now see what I did.

I tried doseq early but it didn't print anything.  I had:
  (with-open [r (reader "doc.txt")]
       (doseq [line (line-seq r)] println line))

so I wasn't evaluating the println.

Cheers

Tom

2009/1/7 Paul Barry <pauljbar...@gmail.com>

> Here's a little cleaner version using doseq:
> (use 'clojure.contrib.duck-streams)
>
> (with-open [r (reader "doc.txt")]
>   (doseq [line (line-seq r)] (println line)))
>
>
> On Wed, Jan 7, 2009 at 7:27 AM, Tom Ayerst <tom.aye...@gmail.com> wrote:
>
>> Thanks Brian.
>>
>> I finally nailed it with:
>>
>> (use '[clojure.contrib.duck-streams :only (reader)])
>>
>> (with-open [r (reader "doc.txt")]
>>    (dorun
>>      (for [line (line-seq r)] (do (println line)))))
>>
>> Cheers
>>
>> Tom
>>
>> 2009/1/6 Brian Doyle <brianpdo...@gmail.com>
>>
>>
>>> On Tue, Jan 6, 2009 at 4:47 PM, Tom Ayerst <tom.aye...@gmail.com> wrote:
>>>
>>>> Its not the println, nor getting a reader (duckstreams is fine, I can do
>>>> that). Its the converting it to a seq and stepping through it printing each
>>>> element (which should be a line). Its the loopy, steppy bit, just for a 
>>>> side
>>>> effect; that I am messing up.
>>>>
>>>> Cheers
>>>>
>>>> Tom
>>>
>>>
>>> I've done this type of thing and it worked great for me.
>>>
>>>        (with-open [r (clojure.contrib.duck-streams/reader
>>> "filename.txt")]
>>>            (doseq [line (line-seq r)]
>>>                ; do stuff with the line here
>>>               ))
>>>
>>> Basically you'll want to use the line-seq function.  Hopefully that
>>> helps.
>>>
>>>
>>>> 2009/1/6 Mark Volkmann <r.mark.volkm...@gmail.com>
>>>>
>>>>
>>>>> On Tue, Jan 6, 2009 at 5:26 PM, Tom Ayerst <tom.aye...@gmail.com>
>>>>> wrote:
>>>>> > Hi,
>>>>> >
>>>>> > How do I read and print a text file?  I can read it, its the printing
>>>>> that
>>>>> > is the problem, I feel it should be obvious but I keep tripping
>>>>> myself up.
>>>>> > (The context is I need to extract data line by line, translate the
>>>>> line
>>>>> > format and save it for a legacy app)
>>>>>
>>>>> Do you just need to print to stdout?
>>>>> The println function does that. It puts a space between the output of
>>>>> each of its arguments. If you don't want that you can use the str
>>>>> function to concatenate a bunch of string values together.
>>>>> If you need something fancier, don't forget that you can access
>>>>> everything in java.io from Clojure.
>>>>>
>>>>> --
>>>>> R. Mark Volkmann
>>>>> Object Computing, Inc.
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>>
>>
>>
>>
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
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
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