在Clojure 1.3中,如何读取和写入文件?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (106)

我想知道Clojure 1.3中读取和写入文件的方法。

  1. 如何读取整个文件
  2. 如何逐行读取文件
  3. 如何编写新文件
  4. 如何向现有文件中添加一行
提问于
用户回答回答于

如果该文件适合内存,您可以使用slurp和sputp来读取和写入它:

(def s (slurp "filename.txt"))

(现在以字符串形式包含文件的内容)

(spit "newfile.txt" s)

如果不退出并写入文件内容,这将创建newfile.txt。如果想要附加到文件中,可以这样做。

(spit "filename.txt" s :append true)

要读取或写入文件行,可以使用Java的读取器和编写器。

(ns file.test
  (:require [clojure.java.io :as io]))

(let [wrtr (io/writer "test.txt")]
  (.write wrtr "hello, world!\n")
  (.close wrtr))

(let [wrtr (io/writer "test.txt" :append true)]
  (.write wrtr "hello again!")
  (.close wrtr))

(let [rdr (io/reader "test.txt")]
  (println (.readLine rdr))
  (println (.readLine rdr)))
; "hello, world!"
; "hello again!"
用户回答回答于

假设我们只在这里做文本文件而不是一些疯狂的二进制文件。

第一条:如何将整个文件读入内存。

(slurp "/tmp/test.txt")

不推荐当它是一个真正的大文件。

第二条:如何逐行读取文件。

(use 'clojure.java.io)
(with-open [rdr (reader "/tmp/test.txt")]
  (doseq [line (line-seq rdr)]
    (println line)))

所属标签

可能回答问题的人

  • 天使的炫翼

    15 粉丝531 提问35 回答
  • 旺仔小小鹿

    社区 · 运营 (已认证)

    48 粉丝0 提问27 回答
  • 富有想象力的人

    2 粉丝0 提问26 回答
  • 发条丶魔灵1

    6 粉丝525 提问25 回答

扫码关注云+社区

领取腾讯云代金券