在clojure中编写文件
clojure(5)虽然入手探视Clojure,但我需要一些调查来弄清楚阅读文件,并理解写出文件需要更多的调查。概述下面是一些在Clojure中写入文件的食谱,首先使用clojure.contrib.duck-streams.,然后依靠java.io.bufferedwriter.。
clojure.contrib.duck-streams.spit.
鸭流.spit.
Imagine对应于Clojure Core的同行啜
功能。对于小文件的简单操作,吐
可能是你最好的选择。
用户>(要求'clojure.contrib.duck-streams)零用户>(clojure.contrib.duck-streams / spit“output.txt”“测试”)零
这将创造output.txt.
文件包含内容“测试”
。还有附录吐
Variant,将字符串附加到文件。
用户>(要求'clojure.contrib.duck-streams)零用户>(clojure.contrib.duck-Streams / Append-Spit“output.txt”“测试”)零
这些是非常有用的功能,但请记住,您需要安装clojure.contrib.在你可以利用它们之前。
clojure.contrib.duck-streams.write-lines
用于将写作写入文件,再次鸭子流
提供最简单的方法写行。
用户>(要求'clojure.contrib.duck-streams)零用户>(clojure.contrib.duck-Streams /写线“output.txt”(列表123.4.)))零
不幸的是,不是每个人都会立即安装clojure-contrib.
,所以让我们来看看写作文件没有鸭子流
。
java.io.bufferedwriter.
当Clojure核心和贡献的库让我们下来(或者如果我们不想安装贡献的库,在这种情况下)下一个转向的地方是Java方式:在这种情况下java.io.bufferedwriter.。
最简单,java.io.bufferedwriter.
可以帮助我们复制鸭流.spit.
功能。
(ns.象征(:进口(java.io.缓冲器文件迹))))(解脱吐蕃[文件名数据](开放[WTR.(缓冲器。(文件夹。文件名)))](。写WTR.数据))))
(吐蕃“output.txt”“这是一些数据...... \ n”)
然而,吐蕃
与相同的缺陷分享啜
,要求整个文件在内存中保持,而不是在数据流上行动。我们可以用缓冲器
写一种更有效的方法。
(ns.象征(:进口(java.io.缓冲器文件迹))))(解脱写线2.[文件名线](开放[WTR.(缓冲器。(文件夹。文件名)))](Doseq.[线线](。写WTR.线))))
(写线2.“output2.txt”(列表“一个”“b”“C”“d \ n”“e \ n”)))
这四种技术之一(鸭流.spit.
那鸭子流.write-lines
那吐蕃
或者写线2.
)应该足以满足您的大部分文件写作需求。要考虑的下一个方案是从文件读取的系统,执行一些操作,然后懒惰将输出写入文件。希望这将在一两天内准备好。