小编Vis*_*a V的帖子

如何在没有流被关闭之前正确地打开处理?

我正在写我的第一个Clojure计划.

我正在使用clojure.data.csv来处理csv文件.我的文件可能很大,所以我确实想利用懒惰.我的MWE代码演示了我的问题如下所示.

当我执行load-data函数时,我得到"IOException Stream closed",所以我很清楚懒惰流在消费点之前被关闭了.

我查看了data.csv(https://github.com/clojure/data.csv)的文档,可以看到一种方法可以阻止流在关闭之前被关闭以将流开放移动到callstack流被消耗.据我了解,这是我在下面所做的,因为(采取5)是在开放的范围内.显然,我有一个概念上的差距.非常感谢任何帮助!

(ns data-load.core
  (:gen-class)
  (:require [clojure.data.csv :as csv]
            [clojure.java.io :as io]))

(defn load-data [from to]
   (with-open [reader (io/reader from)
               writer (io/writer to)]
              (->> (csv/read-csv reader)
              (take 5))))
Run Code Online (Sandbox Code Playgroud)

clojure

5
推荐指数
1
解决办法
459
查看次数

标签 统计

clojure ×1