W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
Clojure在使用I / O時提供了許多輔助方法,它能幫助我們更方便的操作文件:
讓我們來探討Clojure提供的一些文件操作。
(ns clojure.examples.hello (:gen-class)) ;; This program displays Hello World (defn Example [] (def string1 (slurp "Example.txt")) (println string1)) (Example)
如果文件包含以下行,它們將打印:
line : Example1 line : Example2
如果想要以字符串的形式獲得文件的整個內(nèi)容,一次一行,可以使用clojure.java.io/reader方法。 clojure.java.io/reader類創(chuàng)建一個閱讀器緩沖區(qū),用于讀取文件的每一行。
下面是一個示例,說明如何做到這一點:
(ns clojure.examples.hello (:gen-class)) ;; This program displays Hello World (defn Example [] (with-open [rdr (clojure.java.io/reader "Example.txt")] (reduce conj [] (line-seq rdr)))) (Example)
如果文件包含以下行,它們將打印:
line : Example1 line : Example2
最終輸出結(jié)果為:
["line : Example1" "line : Example2"]
如果要寫入“到”文件,可以使用clojure.core.spit命令將整個字符串打入文件。 spit命令與slurp方法相反。 此方法以作者身份打開文件,寫入內(nèi)容,然后關(guān)閉文件。
下面是一個例子:
(ns clojure.examples.hello (:gen-class)) ;; This program displays Hello World (defn Example [] (spit "Example.txt" "This is a string"))
在上面的例子中,如果你查看Example.txt文件,你會看到文件內(nèi)容為"This is a string"
如果你想一次寫一行文件,你可以使用clojure.java.io.writer類。 clojure.java.io.writer類用于創(chuàng)建寫入器流,其中數(shù)據(jù)的字節(jié)被饋送到流中并且隨后被饋送到文件中。
以下是顯示如何使用spit命令的示例。
(ns clojure.examples.hello (:gen-class)) ;; This program displays Hello World (defn Example [] (with-open [w (clojure.java.io/writer "Example.txt" :append true)] (.write w (str "hello" "world")))) (Example)
當(dāng)執(zhí)行上面的代碼時,“hello world”行將出現(xiàn)在Example.txt文件中。 append:true選項是將數(shù)據(jù)附加到文件。 如果未指定此選項,則每當(dāng)將數(shù)據(jù)寫入文件時,文件將被覆蓋。
要檢查文件是否存在,可以使用clojure.java.io.file類來檢查文件是否存在。 下面是一個例子,說明如何完成這個:
(ns clojure.examples.hello (:gen-class)) ;; This program displays Hello World (defn Example [] (println (.exists (clojure.java.io/file "Example.txt")))) (Example)
如果文件Example.txt存在,輸出將為true。
要從控制臺讀取數(shù)據(jù),可以使用read-line語句。 下面是一個示例,顯示如何使用。
如果在REPL窗口中輸入(read-line)命令,您將有機會在控制臺窗口中輸入一些輸入。
user->(read-line) Hello World
以上示例將輸出以下結(jié)果:
“Hello World”
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: