Hi Sven,
I didn't tried in Pharo 2.0 because is not stable. In Pharo 1.4 this works

FileStream fileNamed: 'd:\Test\filter.csv' do: [ :readStream |
        | lineReader |
        lineReader := ZnLineReader on: readStream.
        Array streamContents: [ :output |
                | line |
                [ (line := lineReader nextLine) isEmpty ]
                        whileFalse: [ output nextPut: line ] ] ].

but this script fails:

'd:\Test\filter.csv' asFileReference readStreamDo: [ :readStream |
         | lineReader |
         lineReader := ZnLineReader on: readStream.
         Array streamContents: [ :output |
                 | line |
                 [ (line := lineReader nextLine) isEmpty ]
                         whileFalse: [ output nextPut: line ] ] ].

probably a problem with #asFileReference
Cheers,

Hernán

2012/8/2 Sven Van Caekenberghe <[email protected]>

> Hernán,
>
> On 01 Aug 2012, at 20:50, Hernán Morales Durand <[email protected]>
> wrote:
>
> >
> > 2012/8/1 Sven Van Caekenberghe <[email protected]>
> > Paul,
> >
> > On 31 Jul 2012, at 18:25, Paul DeBruicker <[email protected]> wrote:
> >
> > > Is there an easy/standard way to open an ascii file and iterate
> through it line by line?
> > >
> > >
> > > I want to put several files contents into their own OrderedCollections
> and then do awful things to them. The files are ~500MB each
> >
> > This uses code that is already in Pharo:
> >
> > '/tmp/foo.txt' asFileReference readStreamDo: [ :readStream |
> >         | lineReader |
> >         lineReader := ZnLineReader on: readStream.
> >         Array streamContents: [ :output |
> >                 | line |
> >                 [ (line := lineReader nextLine) isEmpty ]
> >                         whileFalse: [ output nextPut: line ] ] ]
> >
> > Works with any line end convention. Check the class comment of
> ZnLineReader.
> >
> >
> > No, it doesn't work in latest Pharo 1.4 (14557)
> > MessageNotUnderstood: FileSystemReadStream>>isBinary
> >
> > Cheers,
> >
> > Hernán
>
> I did try the code snippet on Pharo 2.0 before posting it, it worked.
>
> I just tried the following on Pharo 1.4, and it works as well.
>
> FileStream fileNamed: '/tmp/foo.txt' do: [ :readStream |
>         | lineReader |
>         lineReader := ZnLineReader on: readStream.
>         Array streamContents: [ :output |
>                 | line |
>                 [ (line := lineReader nextLine) isEmpty ]
>                         whileFalse: [ output nextPut: line ] ] ]
>
> Maybe you tried using some FileSystem port on 1.4 that is not as complete
> as the code that is by default in 2.0 ?
> But ZnLineReader is independent of that, it has been part of Zn since
> years, in Pharo 1.3 and up.
>
> Sven
>

Reply via email to