Clojure - File I / O

Clojure menyediakan sejumlah metode pembantu saat bekerja dengan I / O. Ini menawarkan kelas yang lebih mudah untuk menyediakan fungsi berikut untuk file.

  • Membaca file
  • Menulis ke file
  • Melihat apakah suatu file adalah file atau direktori

Mari jelajahi beberapa operasi file yang ditawarkan Clojure.

Membaca Isi File sebagai Seluruh String

Jika Anda ingin mendapatkan seluruh konten file sebagai string, Anda dapat menggunakan clojure.core.slurpmetode. Perintah slurp membuka pembaca pada file dan membaca semua isinya, mengembalikan sebuah string.

Berikut adalah contoh bagaimana ini bisa dilakukan.

(ns clojure.examples.hello
   (:gen-class))

;; This program displays Hello World
(defn Example []
   (def string1 (slurp "Example.txt"))
   (println string1))
(Example)

Jika file berisi baris berikut, baris tersebut akan dicetak sebagai -

line : Example1
line : Example2

Membaca Isi File Satu Baris Sekaligus

Jika Anda ingin mendapatkan seluruh konten file sebagai string satu baris dalam satu waktu, Anda dapat menggunakan clojure.java.io/readermetode. Kelas clojure.java.io/reader membuat buffer pembaca, yang digunakan untuk membaca setiap baris file.

Berikut adalah contoh yang menunjukkan bagaimana ini bisa dilakukan.

(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)

Jika file berisi baris berikut, baris tersebut akan dicetak sebagai -

line : Example1
line : Example2

Outputnya akan ditampilkan sebagai -

["line : Example1" "line : Example2"]

Menulis 'ke' File

Jika Anda ingin menulis file 'ke', Anda dapat menggunakan clojure.core.spitperintah untuk memuntahkan seluruh string ke dalam file. Perintah spit adalah kebalikan dari metode slurp. Metode ini membuka file sebagai penulis, menulis konten, lalu menutup file.

Berikut adalah contohnya.

(ns clojure.examples.hello
   (:gen-class))

;; This program displays Hello World
(defn Example []
   (spit "Example.txt"
      "This is a string"))

Pada contoh di atas, jika Anda melihat konten file Example.txt, Anda akan melihat konten “Ini adalah string”.

Menulis 'ke' File Satu Baris Sekaligus

Jika Anda ingin menulis 'ke' file satu baris dalam satu waktu, Anda dapat menggunakan clojure.java.io.writerkelas. Kelas clojure.java.io.writer digunakan untuk membuat aliran penulis di mana byte data dimasukkan ke dalam aliran dan selanjutnya ke dalam file.

Berikut adalah contoh yang menunjukkan bagaimana perintah spit dapat digunakan.

(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)

Ketika kode di atas dijalankan, baris "hello world" akan ada di file Example.txt. Opsi append: true adalah menambahkan data ke file. Jika opsi ini tidak ditentukan, maka file akan ditimpa setiap kali data ditulis ke file.

Memeriksa untuk Melihat Jika File Ada

Untuk memeriksa apakah sebuah file ada, file clojure.java.io.fileclass dapat digunakan untuk memeriksa keberadaan file. Berikut adalah contoh yang menunjukkan bagaimana hal ini dapat dicapai.

(ns clojure.examples.hello
   (:gen-class))

;; This program displays Hello World
(defn Example []
   (println (.exists (clojure.java.io/file "Example.txt"))))
(Example)

Jika file Example.txt ada, hasilnya akan benar.

Membaca dari Konsol

Untuk membaca data dari konsol, file read-linepernyataan dapat digunakan. Berikut adalah contoh yang menunjukkan bagaimana ini dapat digunakan.

Jika Anda memasukkan perintah (read-line) di jendela REPL, Anda akan memiliki kesempatan untuk memasukkan beberapa masukan di jendela konsol.

user->(read-line)
Hello World

Kode di atas akan menghasilkan keluaran sebagai berikut.

“Hello World”