【发布时间】:2013-06-29 03:02:23
【问题描述】:
给定一个输入流,我想以字节数组(块)的形式创建一个惰性数据序列。这是我的尝试:
(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)))
在我测试代码的最后一个语句中,我得到一个:
IOException Stream Closed java.io.FileInputStream.readBytes (FileInputStream.java:-2).
如果我将语句更改为take 1,那么它会返回正常,但这对我没有多大帮助。有谁知道为什么这不起作用?
【问题讨论】:
标签: clojure inputstream lazy-sequences