If you do 

  (File named: '/tmp/lines.txt') readStream[Do:]

you seem to get a binary stream (this is the new implementation I guess), when 
you go via FileReference you get a character stream (but that are old ones).

I know, very confusing. We're always in the midst of transitions.

> On 2 Oct 2017, at 15:17, Stephane Ducasse <stepharo.s...@gmail.com> wrote:
> 
> Sven I do not see the binary stream. Is it ZnCharacterReadStream?
> 
> Stef
> 
> On Mon, Oct 2, 2017 at 1:22 PM, Sven Van Caekenberghe <s...@stfx.eu> wrote:
>> Hi,
>> 
>>> On 2 Oct 2017, at 13:07, Dirk Olmes <d...@xanthippe.ping.de> wrote:
>>> 
>>> Hi,
>>> 
>>> I'm trying to get started with Pharo doing something really simple - at
>>> least that's what I thought ... I'm trying to read a text file line by line.
>>> 
>>> If I use  File named: '/tmp/linex.txt' readStream nextLine I'll get a
>>> debugger telling me that BinaryFileStream does not understand nextLine.
>>> 
>>> Now I've tried my best to find a stream that may be reading plain text
>>> lines but to no avail ...
>>> 
>>> Help!
>>> 
>>> -dirk
>> 
>> $ cat > /tmp/lines.txt
>> one
>> two
>> three
>> 
>> (FileLocator temp / 'lines.txt') contents lines.
>> 
>> '/tmp/lines.txt' asFileReference contents lines.
>> 
>> '/tmp/lines.txt' asFileReference readStreamDo: [ :in |
>>  Array streamContents: [ :out |
>>    [ in atEnd ] whileFalse: [ out nextPut: in nextLine ] ] ].
>> 
>> (File named: '/tmp/lines.txt') readStreamDo: [ :in |
>>  | characterStream |
>>  characterStream := ZnCharacterReadStream on: in.
>>  Array streamContents: [ :out |
>>    [ characterStream atEnd ] whileFalse: [ out nextPut: characterStream 
>> nextLine ] ] ].
>> 
>> They all return #('one' 'two' 'three').
>> 
>> In the last, more complex example, you first get a binary stream (and a 
>> 'line' is a character based concept), so wrapping the binary stream in a 
>> character read stream (which does know about lines) solves the problem.
>> 
>> HTH,
>> 
>> Sven
> 


Reply via email to