Even shorter:

(defn duplicate-file-data [file-path] (spit file-path (slurp
file-path) :append true))

Dave

On Fri, Aug 12, 2011 at 11:16 PM, Sean Corfield <seancorfi...@gmail.com> wrote:
> I think you also want to reorganize the code so you get the line-seq and
> then the line-count outside the for loop. And bear in mind that (inc
> line-count) just returns line-count + 1 - it does not update line-count
> which is what I'm guessing you're expecting?
> Or you could just use slurp and spit:
> (defn duplicate-file-data [file-path] (let [content (slurp file-path)] (spit
> (str file-path 2) (str content content))))
>
> On Fri, Aug 12, 2011 at 8:05 PM, Sean Corfield <seancorfi...@gmail.com>
> wrote:
>>
>> (for ...) generates a lazy sequence so it isn't realized until after the
>> value is returned from the function. You need to wrap (for ...) with (doall
>> ...) to realize the sequence inside (with-open ...)
>>
>> On Fri, Aug 12, 2011 at 4:47 PM, turcio <tur...@gmail.com> wrote:
>>>
>>> Hi,
>>> I'm trying to write a function which creates file twice as big
>>> compared to the original file by simply duplicating its content.
>>>
>>> It looks like in the for loop I can't even read the first line
>>> although I'm using with-open. Can you tell me what am I doing wrong?
>>>
>>> (defn duplicate-file-data [file-path]
>>>  (with-open [reader (clojure.java.io/reader file-path)
>>>              writer (clojure.java.io/writer (str file-path 2) :append
>>> true)]
>>>                               (for [line (line-seq reader)
>>>                                     :let [line-count (count(line-seq
>>> reader))
>>>                                           curr-line 0]
>>>                                     :when (< curr-line line-count)]
>>>                                 ((.write writer (str line))
>>>                                          (.newLine writer)
>>>                                          (inc curr-line))
>>>                                 )))
>>>
>>>
>>> --
>>> Thanks
>>> Daniel
>>>
>>> --
>>> 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
>>
>>
>> --
>> Sean A Corfield -- (904) 302-SEAN
>> An Architect's View -- http://corfield.org/
>> World Singles, LLC. -- http://worldsingles.com/
>> Railo Technologies, Inc. -- http://www.getrailo.com/
>>
>> "Perfection is the enemy of the good."
>> -- Gustave Flaubert, French realist novelist (1821-1880)
>
>
>
> --
> Sean A Corfield -- (904) 302-SEAN
> An Architect's View -- http://corfield.org/
> World Singles, LLC. -- http://worldsingles.com/
> Railo Technologies, Inc. -- http://www.getrailo.com/
>
> "Perfection is the enemy of the good."
> -- Gustave Flaubert, French realist novelist (1821-1880)
>
> --
> 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

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