Menu
CoddyTech

Đọc tệp

Thuộc phần Kiến thức cơ bản về Node.js trong hành trình Node.js của Coddy. Bài học 12 trên 33.

Mỗi lần chạy đều bắt đầu với cùng ba ghi chú, vì chúng chỉ nằm trong bộ nhớ.

readFileSync(path, 'utf8') từ node:fs đọc một tệp dưới dạng chuỗi. Tệp ghi chú lưu JSON, một định dạng văn bản cho dữ liệu được viết giống như mảng và đối tượng JavaScript, còn JSON.parse chuyển văn bản đó thành một mảng. Đọc một tệp không tồn tại sẽ gây ra lỗi ENOENT, vì vậy hãy kiểm tra bằng existsSync trước. Ví dụ dùng condition ? a : b, biểu thức này trả về a khi điều kiện đúng và b khi điều kiện sai.

import { existsSync, readFileSync } from 'node:fs';

const scores = existsSync('scores.json')
    ? JSON.parse(readFileSync('scores.json', 'utf8'))
    : [];
console.log(scores.length);

Không có 'utf8', bạn sẽ nhận được một Buffer, tức các byte thô của tệp, thay vì một chuỗi.

challenge icon

Thử thách

Dễ

Bước này mở dự án công cụ dòng lệnh ghi chú đã chuẩn bị sẵn cho khóa học, chứ không phải các tệp dự án trong CommonJS Modules (bao gồm legacy/stats.cjs). Phần bạn đã làm trước đó vẫn nằm trong bài học riêng. Đọc các tệp được cung cấp trước khi chỉnh sửa store.js. Bản sao này có tất cả các lệnh từ trước đến nay, cùng với một lệnh clear mới.

Hiện tại, mỗi lần chạy đều bắt đầu với cùng ba ghi chú được viết trong store.js. Thay vào đó, ghi chú nên được lấy từ một tệp: notes.json, bạn có thể mở tệp này trong Files.

  1. Trong store.js, thay danh sách cố định gồm ba ghi chú. notes của store phải chứa mảng được lưu trong notes.json: đọc tệp dưới dạng văn bản, sau đó chuyển văn bản JSON thành một mảng.
  2. Nếu notes.json không tồn tại, store sẽ bắt đầu với một mảng rỗng thay vì dừng lại do lỗi. Kiểm tra xem tệp có tồn tại trước khi đọc hay không.

notes.json bắt đầu với hai ghi chú, vì vậy node notes.js list sẽ in ra:

Notes for you
1. Buy milk
2. Call Ada

Khi không có notes.json, lệnh sẽ in ra:

Notes for you
No notes yet

Bạn chỉ thay đổi store.js. notes.js đã in ra No notes yet khi store trống.

Thử nhé: nhập list vào ô sau $ node notes.js rồi nhấn Enter. Bạn sẽ thấy hai ghi chú trong tệp. Sau đó nhập clear. Lệnh này đã có trong notes.js: lệnh xóa notes.json và in ra Deleted notes.json. Nhập lại list: bạn sẽ thấy No notes yet. Trước khi nhấn "Kiểm tra", nhấn Reset files để khôi phục notes.json, vì các lượt kiểm tra cần tệp này.

Tự làm thử

// Tải các ghi chú từ notes.json thay vì danh sách này.
const store = {
    notes: ['Buy milk', 'Call Ada', 'Water the plants'],
    add(text) {
        this.notes.push(text);
        return this.notes.length;
    },
};

export default store;
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Kiến thức cơ bản về Node.js

Tự luyện tập: Playground Express