Clojure語言七:I/O

來源:互聯網
上載者:User

對應stdin, stdout和stderr, Clojure預設提供了*in*, *out*和*err* 三個symbols與之對應。

可以使用binding宏進行重新導向。比如下面的例子將*out* 重新導向到檔案中:

user=> (binding [*out* (java.io.FileWriter. "/home/chenshu/tt")] (println "Write to tt.") (flush))nil

本來輸出到控制台的語句現在寫到檔案tt中了,注意(flush)用來將緩衝區中的資料寫入到*out*中。

這個重新導向僅在binding運算式中有效,離開這個運算式後,*out*仍然是stdout.

可以直接讀取檔案,通過slurp函數(嘖嘖的吃):

user=> (slurp "/home/chenshu/a.xml")"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<service>\n  <mongodb>\n    <uri>localhost</uri>\n  </mongodb>\n  <socket>\n    <port_number>7777</port_number>    \n    <login_timeout>200</login_timeout>\n    <check_timeout>200</check_timeout>\n  </socket>\n</service>\n"

通常寫程式,讀取設定檔後,內容儲存到var中,以便日後使用:

user=> (def s (slurp "/home/chenshu/a.xml"))#'user/suser=> s"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<service>\n  <mongodb>\n    <uri>localhost</uri>\n  </mongodb>\n  <socket>\n    <port_number>7777</port_number>    \n    <login_timeout>200</login_timeout>\n    <check_timeout>200</check_timeout>\n  </socket>\n</service>\n"

不需要上面的重新導向,使用下面函數spit(吐口水)可以寫檔案:

user=> (spit "b.xml" s)niluser=> (slurp "b.xml")"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<service>\n  <mongodb>\n    <uri>localhost</uri>\n  </mongodb>\n  <socket>\n    <port_number>7777</port_number>    \n    <login_timeout>200</login_timeout>\n    <check_timeout>200</check_timeout>\n  </socket>\n</service>\n"user=> 

Clojure語言也在演化,還是要關注官方文檔。

I/O的文檔主要在:http://clojure.org/cheatsheet IO一節。

還有:http://clojure.github.com/clojure/clojure.java.io-api.html

另外這裡也可以參考:http://java.ociweb.com/mark/clojure/article.html#IO

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.