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
Hern��n,
I did try the code snippet on Pharo 2.0 before posting it, it worked.
On 01 Aug 2012, at 20:50, Hern��n Morales Durand <hernan.morales@gmail.com> wrote:
>
> 2012/8/1 Sven Van Caekenberghe <sven@beta9.be>
> Paul,
>
> On 31 Jul 2012, at 18:25, Paul DeBruicker <pdebruic@gmail.com> 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 just tried the following on Pharo 1.4, and it works as well.
FileStream fileNamed: '/tmp/foo.txt' do: [ :readStream |
�� �� �� �� | lineReader |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 ?
�� �� �� �� lineReader := ZnLineReader on: readStream.
�� �� �� �� Array streamContents: [ :output |
�� �� �� �� �� �� �� �� | line |
�� �� �� �� �� �� �� �� [ (line := lineReader nextLine) isEmpty ]
�� �� �� �� �� �� �� �� �� �� �� �� whileFalse: [ output nextPut: line ] ] ]
But ZnLineReader is independent of that, it has been part of Zn since years, in Pharo 1.3 and up.
Sven