SORU
13 EKİM 2011, PERŞEMBE


Ve bir dosya okumak ve yazmak için Nasıl 1.3, Clojure

"Ve clojure 1.3 . dosya okuma yazma şekli önerilen bilmek istiyorum

  1. Nasıl tüm dosyayı okumak için
  2. Nasıl hattı ile bir dosya satır okumak için
  3. Nasıl yeni bir dosya yazmak için
  4. Varolan bir dosya için bir satır ekleyin

Teşekkürler.

CEVAP
13 EKİM 2011, PERŞEMBE


Biz varsayarsak sadece metin dosyaları ve ikili çılgın şeyler yapıyor.

Belleğe tüm dosyayı okumak için nasıl. numara 1:

(slurp "/tmp/test.txt")

Bu gerçekten büyük bir dosya olduğunda tavsiye edilmez.

Satır satır dosya okumak için nasıl. Sayı 2:

(use 'clojure.java.io)
(with-open [rdr (reader "/tmp/test.txt")]
  (doseq [line (line-seq rdr)]
    (println line)))

with-open makro okuyucu vücudun sonunda kapalı olduğunu ilgilenir. Okuyucu fonksiyonu BufferedReader içine bir dize (URL, vb.) kullanmaya zorlar. line-seq tembel bir seq sunar. Tembel seq sonraki öğeyi zorlu bir çizgi okuyucu tarafından okunan, içine sonuçları.

Yeni bir dosyaya yazmak için nasıl. Sayı 3:

(use 'clojure.java.io)
(with-open [wrtr (writer "/tmp/test.txt")]
  (.write wrtr "Line to be written"))

Yine with-open BufferedWriter vücudun sonunda kapalı olduğunu ilgilenir. Yazar java birlikte çalışabilirlik ile kullanın kullandığınız BufferedWriter, bir dizeye zorlayan: (.write wrtr "something").

Ayrıca spit, slurp tersini kullanabilirsiniz:

(spit "/tmp/test.txt" "Line to be written")

4 numara: varolan bir dosya için bir satır ekleyin.

(use 'clojure.java.io)
(with-open [wrtr (writer "/tmp/test.txt" :append true)]
  (.write wrtr "Line to be appended"))

Ekle seçeneği ile yukarıdaki gibi aynı, ama şimdi.

Yoksa yine spit, slurp tersi:

(spit "/tmp/test.txt" "Line to be written" :append true)

PS:Daha açık gerçeği hakkında size okuma ve yazma için bir Dosya değil, başka bir şey olabilir ilk oluşturmak için bir Dosya nesnesi ve sonra zorlamak içine BufferedReader Yazar:

(reader (file "/tmp/test.txt"))
;; or
(writer (file "tmp/test.txt"))

Dosya işlevi de clojure.java.ıo.

PS2:Bazen kullanışlı, geçerli dizini ne görmek mümkün olacak (".") . İki şekilde mutlak yol alabilirsiniz:

(System/getProperty "user.dir") 

ya

(-> (java.io.File. ".") .getAbsolutePath)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Damien Hayes

    Damien Hayes

    11 Mart 2008
  • FamilyFeud

    FamilyFeud

    22 AĞUSTOS 2006
  • JonnyEthco

    JonnyEthco

    5 EKİM 2006