由于调用Java易如反掌,Clojure仅仅提供了一个用于处理I/O操作的非常小的函数集合,但是clojure.java.io库中的这些函数使得调用Java中那些处理I/O的类变得更加方便。
Clojure中预定义了几个特殊形式的全局绑定变量*in*, *out* 和 *err*,分别对应于标准输入、输出和错误处理 。【(flush)】等价于【(.flush *out*)】,将输出缓冲中的内容刷到标注输出流*out*中。当然这些绑定变量都是可以改变的,比如向如下所示你可以把输出重定向到 "my.log
"文件里面去:
(binding [*out* (java.io.FileWriter. "my.log")]
...
(println "This goes to the file my.log.")
...
(flush))
print函数能够将代表任意数量对象的字符串打印到特殊形式*out*所代表流中,这些对象用空格隔开 (print obj1 obj2),打印结果也将用单个空格隔开,要忽略这些空格可以写成这种形式(print str(obj1 obj2))。
println函数在输出换行符号时默认将缓冲刷入*out*中,但可以将*flush-on-newline*全局变量为false改变这一行为。
(let [obj1 "foo"
obj2 {:letter \a :number (Math/PI)}] ; a map
(println "Output from print:")
(print obj1 obj2)
(println "Output from println:")
(println obj1 obj2)
(println "Output from pr:")
(pr obj1 obj2)
(println "Output from prn:")
(prn obj1 obj2))
Output from print:
foo {:letter a, :number 3.141592653589793}Output from println:
foo {:letter a, :number 3.141592653589793}
Output from pr:
"foo" {:letter \a, :number 3.141592653589793}Output from prn:
"foo" {:letter \a, :number 3.141592653589793}
(use '[clojure.java.io :only (reader)])
(defn print-if-contains [line word]
(when (.contains line word) (println line)))
(let [file "story.txt"
word "fur"]
; will print fur
; with-open will close the reader after
; evaluating all the expressions in its body.
(with-open [rdr (reader file)]
(doseq [line (line-seq rdr)] (print-if-contains line word))))
#'user/print-if-contains
word "fur"]
; will print fur
nil
分享到:
相关推荐
在 Clojure 中实现 IO monad 的实验。 为什么 Haskell 应该拥有所有的乐趣(功能纯度)? 要深入解释这样做的动机和过程,请查看 为什么使用这个? 您可能不想将其用于任何赚钱目的,但写起来很有趣,并且希望对...
接下来,为了在Eclipse中进行Clojure开发,我们需要安装一个名为Counterclockwise的插件。Counterclockwise是Eclipse上的Clojure IDE,它提供了代码编辑、调试、自动完成和测试支持等功能。可以通过以下步骤安装: ...
翻译进度模块进度译者clojure.core进行中 , ,clojure.data无 clojure.inspector无 clojure.java.browse已完成clojure.java.io已完成clojure.java.javadoc已完成clojure.java.shell已完成clojure.main无 clojure....
依赖: [me.moocar/java.io " 0.1.0 " ]用法是 JDK7 中引入的文件路径的抽象。 这个库提供了和 Paths 之间的兼容性。 下面的示例用法( require 'me.moocar.java.io)( require '[clojure.java.io :as jio])( import ...
Nginx-Clojure的网站源码存储在`nginx-clojure.github.io`仓库中,通过`.github.io`的域名展示。用户可以浏览源代码,了解项目详情,甚至参与贡献。 【项目源码分析】 `nginx-clojure.github.io-master`是这个项目...
这个项目旨在为开发者提供一个学习Clojure和构建RESTful服务的实例,同时也配合了在kendru.github.io上发布的教程系列,使学习过程更具实践性。 Clojure是一种现代的、静态类型的函数式编程语言,它运行在Java...
Clojure可以方便地与Java的IO和数据库API集成。 【标签】"clojure crawler" 指出项目的核心技术栈是Clojure和爬虫开发。这意味着项目开发者可能关注于如何利用Clojure的独特语法和功能来优化爬虫的性能和可读性。 ...
《另一种Craft.io:使用试剂在Clojure中进行多人Starcraft游戏克隆》 在这个项目中,开发者使用了Clojure编程语言以及Reagent库来构建一个多人在线的Starcraft游戏克隆版,名为“另一种Craft.io”。这个项目展示了...
它以其轻量级、快速且易于使用的特性,在Clojure社区中受到了广泛欢迎。这个库是基于Java NIO(非阻塞I/O)构建的,充分利用了Java平台的优势,提供了高效的服务端和客户端解决方案。 在Clojure中,HTTPKit提供了...
fs, 面向Clojure的文件系统实用程序 - 用于Clojure的文件系统实用程序 API文档这个库定义了一些用于在Clojure中处理文件系统的工具。 通常,它希望填补 clojure.java.io 留下的空白并添加( 美化) 所提供的java.io....
在Clojure中,由于其多范式的特性,通常直接进行IO操作,如读写文件,但这并不意味着不能构建一个模拟IO Monad的系统。 通过实际编写代码并使用Clojure中的函数和数据结构,我们可以更好地理解Monad的运作方式。这...
银行家Clojure中的货币和货币处理 Clojure库可在具有加密货币和其他非标准令牌支持的货币单位上运行。特征纯Clojure实现。 多态界面(注册的货币可以表示为货币记录,数字,字符串或关键字)。 支持的操作:计算,...
Nginx-Clojure 是一个 Nginx 模块,用于嵌入 Clojure 或 Java 或 Groovy 程序,通常是那些基于 Ring 的处理程序。 查看 http://nginx-clojure.github.io 了解更多详情
output-file (str (clojure.java.io/file "/path/to/output/directory") (name file) ".html")] (spit output-file highlighted))) ``` 以上就是在Clojure项目中使用Clygments进行语法高亮的基本步骤。通过这种...
该库定义了一些用于在Clojure中处理文件系统的实用程序。 通常,它想填补clojure.java.io留下的空白,并添加(整理) java.io.File提供的内容。 注意:此库处于维护模式。 如果您使用的是JDK8或更高,请考虑使用...
在本研讨会中,我们采用了一种实践方法,每个人都可以使用Clojure代码,并使用REPL(交互式运行时环境)对其进行实验。 通过在REPL中评估,破坏,修复和扩展代码,您将很快对Clojure有所了解,同时始终获得有关您...
在Clojure中实现类似Grep的代码搜索功能,我们可以使用 `clojure.string/join` 和 `clojure.java.io/reader` 读取文件内容,然后结合 `clojure.core/filter` 和上面定义的正则表达式规格筛选出匹配的行。以下是一个...
Aleph将来自网络的数据显示为流,可以将其轻松转换为java.io.InputStream , 通道,Clojure序列或。 它公开了HTTP,TCP和UDP的简单默认包装器,但允许访问底层库的全部性能和灵活性。 [aleph " 0.4.6 " ] HTTP ...
[cljs-node-io "1.1.2"]cljs-node-io {:mvn/version "1.1.2"} 这是clojure.java.io到clojurescript的端口,对nodejs来说是有意义的。 目的是使Clojure程序员感到宾至如归,因此大多数事物都具有与jvm相同的签名和...
一组Clojure库,用于与Clojure应用程序中的Kubernetes进行交互。 由核心的Kubernetes客户端+提供更高级别构造的各种模块(有时具有附加的依赖性)组成。 为什么 一些Clojure Kubernetes库已经存在,但是并不全面。 ...