Squeakで日本語含んだSJISファイル読み込み
ShiftJISで、1行目に2バイト文字があるファイルの読み込み。
| stream | Transcript clear. stream := MultiByteFileStream new converter: (TextConverter newForEncoding: #sjis); wantsLineEndConversion: true; open: 'D:\test\st\saki\log\1249233074.dat' forWrite: false. [[ stream atEnd ] whileFalse: [ | line | line := stream nextLine. Transcript show: line; cr ]] ensure: [ stream notNil ifTrue: [stream close] ]
昔書いたエントリのコードが動かなかったんでおかしいなあとか思いつつ、まさか不可能ということもないだろうと思ったんでいろいろ探してたら、こんな感じに。今回のケースではCrLfFileStream class>>readOnlyFileNamed:とかやっても動かない。
変なデータでも含まれてるのか、特定ファイルのリード時に異常な落ち方をすることもあるけど、自分の中ではこれで一段落ついた感じでよかった。