Clojure - Datei-E / A.
Clojure bietet eine Reihe von Hilfsmethoden für die Arbeit mit E / A. Es bietet einfachere Klassen, um die folgenden Funktionen für Dateien bereitzustellen.
- Dateien lesen
- Schreiben in Dateien
- Überprüfen, ob eine Datei eine Datei oder ein Verzeichnis ist
Lassen Sie uns einige der Dateivorgänge untersuchen, die Clojure zu bieten hat.
Lesen des Inhalts einer Datei als ganze Zeichenfolge
Wenn Sie den gesamten Inhalt der Datei als Zeichenfolge abrufen möchten, können Sie die verwenden clojure.core.slurpMethode. Der Befehl slurp öffnet einen Reader für eine Datei, liest den gesamten Inhalt und gibt eine Zeichenfolge zurück.
Das Folgende ist ein Beispiel dafür, wie dies getan werden kann.
(ns clojure.examples.hello
(:gen-class))
;; This program displays Hello World
(defn Example []
(def string1 (slurp "Example.txt"))
(println string1))
(Example)
Wenn die Datei die folgenden Zeilen enthält, werden sie wie folgt gedruckt:
line : Example1
line : Example2
Den Inhalt einer Datei zeilenweise lesen
Wenn Sie den gesamten Inhalt der Datei zeilenweise als Zeichenfolge abrufen möchten, können Sie die verwenden clojure.java.io/readerMethode. Die Klasse clojure.java.io/reader erstellt einen Lesepuffer, mit dem jede Zeile der Datei gelesen wird.
Das folgende Beispiel zeigt, wie dies getan werden kann.
(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)
Wenn die Datei die folgenden Zeilen enthält, werden sie wie folgt gedruckt:
line : Example1
line : Example2
Die Ausgabe wird angezeigt als -
["line : Example1" "line : Example2"]
Schreiben in Dateien
Wenn Sie in Dateien schreiben möchten, können Sie die verwenden clojure.core.spitBefehl zum Spucken ganzer Zeichenfolgen in Dateien. Der Befehl spit ist das Gegenteil der Slurp-Methode. Diese Methode öffnet eine Datei als Writer, schreibt Inhalte und schließt die Datei.
Es folgt ein Beispiel.
(ns clojure.examples.hello
(:gen-class))
;; This program displays Hello World
(defn Example []
(spit "Example.txt"
"This is a string"))
Wenn Sie im obigen Beispiel den Inhalt der Datei Example.txt sehen, sehen Sie den Inhalt von "Dies ist eine Zeichenfolge".
Schreiben von 'in' Dateien zeilenweise
Wenn Sie zeilenweise in Dateien schreiben möchten, können Sie die verwenden clojure.java.io.writerKlasse. Die Klasse clojure.java.io.writer wird verwendet, um einen Writer-Stream zu erstellen, bei dem Datenbytes in den Stream und anschließend in die Datei eingespeist werden.
Das folgende Beispiel zeigt, wie der Befehl spit verwendet werden kann.
(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)
Wenn der obige Code ausgeführt wird, ist die Zeile "Hallo Welt" in der Datei Example.txt vorhanden. Die Option append: true besteht darin, Daten an die Datei anzuhängen. Wenn diese Option nicht angegeben ist, wird die Datei überschrieben, wenn Daten in die Datei geschrieben werden.
Überprüfen, ob eine Datei vorhanden ist
Um zu überprüfen, ob eine Datei vorhanden ist, klicken Sie auf clojure.java.io.fileKlasse kann verwendet werden, um das Vorhandensein einer Datei zu überprüfen. Das folgende Beispiel zeigt, wie dies erreicht werden kann.
(ns clojure.examples.hello
(:gen-class))
;; This program displays Hello World
(defn Example []
(println (.exists (clojure.java.io/file "Example.txt"))))
(Example)
Wenn die Datei Example.txt vorhanden ist, ist die Ausgabe wahr.
Lesen von der Konsole
Um Daten von der Konsole zu lesen, müssen Sie die read-lineAnweisung kann verwendet werden. Das folgende Beispiel zeigt, wie dies verwendet werden kann.
Wenn Sie den Befehl (Zeile lesen) im REPL-Fenster eingeben, haben Sie die Möglichkeit, Eingaben in das Konsolenfenster einzugeben.
user->(read-line)
Hello World
Der obige Code erzeugt die folgende Ausgabe.
“Hello World”