If I do just something like that:

(def fl (clojure.java.io/reader "/path/to/file"))

(defn lazy-reader [fl]
    (lazy-seq
        (cons (.read fl) (lazy-reader fl))))

Can work ? (0.03696 ms for 500 char)
Possible problem ?

On Dec 11, 9:49 pm, Stephen Compall <stephen.comp...@gmail.com> wrote:
> On Sat, 2011-12-10 at 23:13 -0800, Simone Mosciatti wrote:
> > Anyway, i'm looking for read a file byte by byte, perfect would be get
> > a lazy-seq of every byte in the file, it's looks, for me, very weird
> > that there isn't a built-in or some easy way to do that
>
> The tradeoffs aren't universal enough to justify "one true" way to do
> that.  You might be willing to pay the overhead of one LazySeq,
> function, lock, and Byte per byte, but many can't afford it.
>
> > To be honest, I need to read N byte at time (where I know N before to
> > read) so I can built anytime a bite-array and put in the necessary
> > byte which (def stream (new java.io.FileInputStream filename))
> > (def vettore (byte-array N))
> > (.read stream vettore)
>
> > But i really don't like this way, the (.read ) is horrible, I guess...
>
> It's not Clojure style to replace absolutely everything you might do
> with Java interop with a standard Clojure-style library.  Else, there
> would be no motivation to make interop so easy.
>
> It is Clojure style, though, to use those Clojure libraries that do
> exist, when appropriate.  In this case, see `reader' in the
> clojure.java.io module included with the standard library, as a
> replacement for your `new' call.
>
> As for the reading part itself, I suggest careful usage of `iterate' and
> `take-while' (or `lazy-seq' and `cons') from the standard library, with
> appropriate .read calls.  Byte-by-byte reading can be accomplished by
> writing a single iterate, a single take-while, and a single .read call.
>
> --
> Stephen Compall
> ^aCollection allSatisfy: [:each|aCondition]: less is better

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