การอ่านไฟล์ข้อความ

Clojure:
การอ่านไฟล์ข้อความ

วิธีการ:

;; อ่านไฟล์ทั้งหมดเป็นสตริง
(slurp "example.txt")

;; ผลลัพธ์: "สวัสดี, นี่คือเนื้อหาไฟล์ของคุณ!"

;; อ่านไฟล์เป็นบรรทัดๆ
(with-open [reader (clojure.java.io/reader "example.txt")]
  (doseq [line (line-seq reader)]
    (println line)))

;; ผลลัพธ์:
;; สวัสดี,
;; นี่คือ
;; เนื้อหาไฟล์ของคุณ!

ลงลึก

โดยทั่วไป, การอ่านไฟล์ในภาษาโปรแกรมมิ่งถือว่าเป็นงานที่ต้องเขียนมากมีขั้นตอนมากมายในการจัดการข้อผิดพลาดและทรัพยากร ใน Clojure, คุณได้รับประโยชน์จากฟังก์ชัน slurp, บรรทัดเดียวที่สวยงามเพื่อคว้าเนื้อหาไฟล์ทั้งหมด สำหรับการอ่านแบบบรรทัดต่อบรรทัด, line-seq ร่วมกับ with-open ช่วยให้มั่นใจได้ว่าการจัดการไฟล์เป็นไปอย่างมีประสิทธิภาพและปลอดภัย เป็นที่ควรกล่าวถึงด้วยว่าแม้ slurp จะสะดวก แต่ไม่เหมาะกับไฟล์ขนาดใหญ่เนื่องจากข้อจำกัดด้านหน่วยความจำ นั่นคือเมื่อ line-seq โดดเด่น, เนื่องจากมันอ่านไฟล์อย่างเฉื่อยชา, บรรทัดต่อบรรทัด

ทางเลือกอื่นๆ ในการอ่านไฟล์ใน Clojure รวมถึงการใช้ clojure.java.io/file กับฟังก์ชันเช่น reader และโครงสร้างเช่น with-open เพื่อจัดการจับไฟล์ด้วยตัวเอง การตัดสินใจที่นี่คือระหว่างการใช้งานง่าย (slurp) กับการควบคุมอย่างละเอียดประกอบด้วยความปลอดภัยทรัพยากร (with-open และ reader)

ในทางของการนำไปใช้งาน, วิธีการของ Clojure มีพื้นฐานมาจากคลาส IO ของ Java, ดังนั้นเมื่อคุณกำลังจัดการกับไฟล์ใน Clojure, คุณกำลังจัดการกับคลังสมบัติที่ถูกทดสอบอย่างดีของ Java, ที่ถูกห่อหุ้มในรูปแบบการทำงานแบบฟังก์ชัน ควรเฝ้าระวังทรัพยากรเสมอ: ไฟล์ที่เปิดใช้งานใช้จับมือและหน่วยความจำ, ดังนั้นการจัดการไฟล์อย่างเหมาะสมเป็นนิสัยที่ดี

ดูเพิ่มเติม