Ve bir dosya okumak ve yazmak için Nasıl 1.3, Clojure
"Ve clojure 1.3 . dosya okuma yazma şekli önerilen bilmek istiyorum
- Nasıl tüm dosyayı okumak için
- Nasıl hattı ile bir dosya satır okumak için
- Nasıl yeni bir dosya yazmak için
- Varolan bir dosya için bir satır ekleyin
Teşekkürler.
CEVAP
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)
Nasıl bir dosya satır okumak için php ...
Nasıl bir clojure yeniden ÇOĞALTMA içi...
Nasıl bir dış özelliklerini okumak Mav...
Nasıl bir zihinsel Lisp/Clojure kodu o...
Nasıl dosya içeriğini okumak için bir ...