長さが 4 の場合、次のループは 5 回実行されます。ストリームから 5 文字を読み取ります。
(loop [i (.read stream) result "" counter length]
(let [c (char i)]
(println "=>" c)
(if (zero? counter)
result
(recur (.read stream) (str result c) (dec counter)))))