Cho luồng đầu vào, tôi muốn tạo một chuỗi dữ liệu lười ở dạng byte-mảng (khối). Dưới đây là cố gắng của tôi:Clojure: Tạo một chuỗi khối byte lười từ luồng đầu vào
(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)))
Trong tuyên bố mới nhất, nơi tôi đang thử nghiệm mã, tôi nhận được một:
IOException Suối Closed java.io.FileInputStream.readBytes (FileInputStream.java:-2).
Nếu tôi thay đổi tuyên bố thành take 1
thì nó sẽ trả về tiền phạt, nhưng điều đó không giúp ích gì cho tôi nhiều. Có ai có bất kỳ ý tưởng tại sao điều này sẽ không làm việc?