【问题标题】:Writing CSV file in Clojure with writer使用 writer 在 Clojure 中编写 CSV 文件
【发布时间】:2018-06-21 13:50:26
【问题描述】:

我需要从服务器返回一个 CSV 文件。

我有一个简单映射的数据,我不想在磁盘上创建文件,我看到 write-csv 函数可以接受写入器作为参数。

类似的东西(但它不起作用):

(csv/write-csv (java.io.BufferedWriter. (java.io.OutputStream.  )) csv-data)

错误:

:cause java.io.OutputStream
 :via
 [{:type java.lang.InstantiationError
   :message java.io.OutputStream

【问题讨论】:

  • “不起作用”的含义非常广泛。什么不起作用?错误?等
  • (java.io.OutputStream. ) 是一个不能直接实例化的抽象类,所以这就是这个特定错误的原因。

标签: java csv clojure server


【解决方案1】:

如果你只想要一个字符串,你可以使用with-out-str:

(with-out-str
  (csv/write-csv *out* csv-data))

【讨论】:

  • 它返回空字符串。
  • 你的csv-data是什么形状的?
  • (with-out-str (csv/write-csv *out* [["foo" "bar"]])) => "foo,bar\n"
【解决方案2】:

想通了。这是我的解决方案:

(let [writer (java.io.StringWriter.)]
    (csv/write-csv writer csv-data)
    (.toString writer))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-18
    相关资源
    最近更新 更多