Đọc một tệp văn bản

Clojure:
Đọc một tệp văn bản

Cách thực hiện:

;; Đọc toàn bộ tệp dưới dạng chuỗi
(slurp "example.txt")

;; Kết quả: "Hello, this is your file content!"

;; Đọc tệp theo từng dòng
(with-open [reader (clojure.java.io/reader "example.txt")]
  (doseq [line (line-seq reader)]
    (println line)))

;; Kết quả:
;; Hello,
;; this is your
;; file content!

Sâu hơn nữa

Truyền thống, việc đọc tệp trong các ngôn ngữ lập trình là một nhiệm vụ dài dòng với nhiều bước để xử lý lỗi và tài nguyên. Với Clojure, bạn được hưởng lợi từ hàm slurp, một dòng lệnh đơn giản tinh tế để nắm bắt toàn bộ nội dung của tệp. Đối với việc đọc từng dòng, line-seq kết hợp với with-open đảm bảo việc xử lý tệp một cách hiệu quả và an toàn. Cũng đáng chú ý là dù slurp rất tiện lợi, nó không lý tưởng cho các tệp lớn do ràng buộc về bộ nhớ. Đó là khi line-seq tỏa sáng, khi nó đọc tệp một cách biếng (lazy), từng dòng một.

Các phương án thay thế cho việc đọc tệp trong Clojure bao gồm sử dụng clojure.java.io/file với các hàm như reader và cấu trúc như with-open để quản lý tay điều khiển tệp một cách thủ công. Sự cân nhắc ở đây là giữa sự tiện lợi (dùng slurp) và kiểm soát chính xác kết hợp với sự an toàn tài nguyên (with-openreader).

Về mặt triển khai, phương pháp tiếp cận của Clojure dựa trên các lớp IO của Java, do đó khi bạn đang xử lý tệp trong Clojure, bạn đang sử dụng các thư viện của Java đã được kiểm nghiệm, chín chắn, bọc trong một ngữ cảnh hàm. Luôn chú ý đến tài nguyên: các tệp mở tiêu thụ cả tay cầm và bộ nhớ, vì vậy việc xử lý tệp sạch sẽ là một thói quen tốt.

Xem thêm