入力ストリームがある場合、バイト配列(チャンク)の形式でデータのレイジーシーケンスを作成したいと考えています。ここに私の試みだ:Clojure:入力ストリームからバイトチャンクのレイジーシーケンスを作成する
にIOExceptionストリームを閉じたjava.io.FileInputStream.readBytes(FileInputStream.java:-2:私は、コードをテストしています最後の文では、
(defn- read-or-nil [stream]
(let [buf (byte-array 2)]
(when-not (= -1 (.read stream buf))
buf)))
(defn byte-chunk-seq [stream]
(cons (read-or-nil stream) (lazy-seq (byte-chunk-seq stream))))
(with-open [rdr (java.io.FileInputStream. "/tmp/wut")]
(take 2 (byte-chunk-seq rdr)))
、私が取得します)。
ステートメントをtake 1
に変更した場合、正常に戻りますが、それほど役に立ちません。なぜ誰かがこれがうまくいかないアイデアはありますか?