Điều này xuất hiện rất cao trên Google, vì vậy tôi muốn thêm một số thông tin theo ngữ cảnh về câu hỏi ban đầu (nhấn mạnh của tôi):
Tại sao fs.readFile () của Node.js trả về bộ đệm thay vì chuỗi?
Bởi vì tập tin không phải lúc nào cũng là văn bản
Ngay cả khi bạn là lập trình viên biết điều đó: Node không biết bạn đang cố đọc gì trong tập tin. Nó có thể là một tệp văn bản, nhưng cũng có thể là một tệp lưu trữ ZIP hoặc hình ảnh JPG - Node không biết.
Bởi vì đọc các tập tin văn bản là khó khăn
Ngay cả khi Node biết rằng nó là để đọc một tệp văn bản, thì nó vẫn không biết mã hóa ký tự nào được sử dụng (tức là cách các byte trong ánh xạ tệp thành các ký tự có thể đọc được), vì bản thân mã hóa ký tự không được lưu trữ trong tệp .
Có nhiều cách để đoán mã hóa ký tự của các tệp văn bản với độ tin cậy nhiều hơn hoặc ít hơn (đó là những gì trình soạn thảo văn bản làm khi mở tệp), nhưng bạn thường không muốn mã của mình dựa vào đoán mà không có hướng dẫn rõ ràng.
Bộ đệm để giải cứu!
Vì vậy, vì nó không và không thể biết tất cả các chi tiết này, Node chỉ đọc byte tệp cho byte, mà không giả sử bất cứ điều gì về nội dung của nó.
Và đó là những gì bộ đệm trả về là: một thùng chứa không được đề cập cho nội dung nhị phân thô. Làm thế nào nội dung này nên được giải thích là tùy thuộc vào bạn là nhà phát triển.