Hi Nicolai,
The FileSystem API is a bit inconsistent, yes.
This is how you can use it:
(FileLocator temp / 'foo.txt') writeStreamDo: [ :out |
�� out binary.
�� (ZnCharacterWriteStream on: out encoding: #utf8) << '��l��ve' ].
(FileLocator temp / 'foo.txt') readStreamDo: [ :in |
�� in binary.
�� ZnCharacterReadStream on: in encoding: #utf8) upToEnd ].
(FileLocator temp / 'foo.txt') binaryReadStreamDo: [ :in |
�� (ZnCharacterReadStream on: in encoding: #utf8) upToEnd ].
There is no #binaryWriteStreamDo:
The API around File is more correct, IMHO.
Does this help ?
What exactly is your question ?
Sven
> On 4 Feb 2017, at 12:09, Nicolai Hess <nicolaihess@gmail.com> wrote:
>
> Hi
> How can I specify the character encoding when opening a readStream on a FileRerefence.
>
> I found this, that works:
>
> | readStream fileContent |
> readStream := (File named: aFileName) openForRead.
> fileContent := ZnCharacterReadStream on: readStream encoding: encoding.
>�� fileContent upToEnd asString.
>
> But if I try to do the same with a readStream from a FileReference
>
> | readStream fileContent |
> readStream := aFileName asFileReference readStream.
> fileContent := ZnCharacterReadStream on: readStream encoding: encoding.
>�� fileContent upToEnd asString.
>
> I get an error SmallInteger DNU #asciiValue,
>
> this is because, in the first method, we create a binary filestream, and if we
> use readStream from a FileReference, the stream is a MultibyteFileStream.
>
> How can I us ZnEncoder for a readstream from a FileReference?
>
> (and is it on purpose that both readStream method (openForRead/readStream)
> return different kinds of binary streams?)
>
>
> nicolai