Menu
CoddyTech

قراءة ملف

جزء من قسم أساسيات Node.js في رحلة Node.js على Coddy. الدرس 12 من 33.

تبدأ كل مرة تشغيل بالملاحظات الثلاث نفسها، لأنها لا تُحفظ إلا في الذاكرة.

تقرأ readFileSync(path, 'utf8') من node:fs ملفًا على هيئة سلسلة نصية. يحتوي ملف الملاحظات على JSON، وهو تنسيق نصي للبيانات يُكتب مثل المصفوفات والكائنات في JavaScript، وتحول JSON.parse ذلك النص إلى مصفوفة. تؤدي قراءة ملف غير موجود إلى إطلاق خطأ ENOENT، لذا تحقّق أولًا باستخدام existsSync. يستخدم المثال condition ? a : b، ويعطي a عندما يكون الشرط صحيحًا وb عندما يكون خاطئًا.

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

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

من دون 'utf8'، ستحصل على Buffer، أي البايتات الخام للملف، بدلًا من سلسلة نصية.

challenge icon

التحدي

سهل

تفتح هذه الخطوة مشروع أداة سطر الأوامر للملاحظات المُعدّة للدورة، بدلًا من ملفات مشروعك من CommonJS Modules (بما فيها legacy/stats.cjs). يبقى عملك السابق في درسه الخاص. اقرأ الملفات المقدّمة قبل تعديل store.js. تحتوي هذه النسخة على كل الأوامر حتى الآن، بالإضافة إلى أمر جديد هو clear.

حاليًا، يبدأ كل تشغيل بالملاحظات الثلاث نفسها المكتوبة في store.js. ينبغي أن تأتي ملاحظاتك من ملف بدلًا من ذلك: notes.json، الذي يمكنك فتحه في «الملفات».

  1. في store.js، استبدل قائمة الملاحظات الثلاث الثابتة. يجب أن تحتوي notes في المخزن على المصفوفة المحفوظة في notes.json: اقرأ الملف كنص، ثم حوّل نص JSON إلى مصفوفة.
  2. إذا لم يكن notes.json موجودًا، يبدأ المخزن بمصفوفة فارغة بدلًا من التوقف بسبب خطأ. تحقّق من وجود الملف قبل قراءته.

يبدأ notes.json بملاحظتين، لذا يطبع node notes.js list ما يلي:

Notes for you
1. Buy milk
2. Call Ada

عندما لا يكون notes.json موجودًا، يطبع ما يلي:

Notes for you
No notes yet

لن تغيّر سوى store.js. يطبع notes.js بالفعل No notes yet عندما يكون المخزن فارغًا.

جرّب ذلك: اكتب list في المربع بعد $ node notes.js واضغط على Enter. سترى الملاحظتين من الملف. ثم اكتب clear. هذا الأمر موجود بالفعل في notes.js: فهو يحذف notes.json ويطبع Deleted notes.json. اكتب list مرة أخرى: سترى No notes yet. قبل أن تضغط على «تحقق»، اضغط على «إعادة ضبط الملفات» لإعادة notes.json، لأن عمليات التحقق تحتاج إليه.

جرّب بنفسك

// حمّل الملاحظات من notes.json بدلًا من هذه القائمة.
const store = {
    notes: ['Buy milk', 'Call Ada', 'Water the plants'],
    add(text) {
        this.notes.push(text);
        return this.notes.length;
    },
};

export default store;
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس أساسيات Node.js

تدرّب بنفسك: Playground لـ Express