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 <sven@beta9.be>
Hernán,
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 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