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
