创建然后写入打印到REPL的文本文件

时间:2013-02-25 22:09:27

标签: java clojure functional-programming

如何从clj文件中获取最新信息如何通过“print”函数输出到REPL并将其全部放入文本文件中? 有没有办法创建一个新的空文本文件,并将其与其他clj文件一起放在项目目录中并对其进行处理?

谢谢。

2 个答案:

答案 0 :(得分:3)

您可以通过重新绑定*out*

来实现此目的
(binding [*out* (clojure.java.io/writer "foo.txt")]
  (print "Hello World"))

(print "This does NOT go to the file") ;; outside the binding macro

运行后,应该有一个名为foo.txt的文件,其中包含“Hello World”。

唯一需要注意的是,此重新绑定仅影响在binding宏中评估的表单。


这会将*out*重新绑定到文件编写器,而不需要使用binding宏。

(set! *out* (clojure.java.io/writer "foo.txt"))

(print "foo") ;; written to foo.txt
(print "bar") ;; written to foo.txt

我不确定重新设置此变量是否会产生任何负面影响。 谨慎使用!

答案 1 :(得分:0)

我知道这不是您正在寻找的内容,但只是为了记录,您可以使用with-out-str宏。

这会将输出视为可以存储在文件中的string