العمل مع نظام الملفات في JavaScript: دليل عملي لـ Node.js

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مقدمة: لماذا تحتاج إلى العمل مع الملفات في JavaScript؟

\n\n

عندما نتحدث عن JavaScript، يتذكر معظم الناس المتصفح والواجهات التفاعلية. ولكن مع ظهور منصة Node.js، تجاوز JavaScript حدود صفحات الويب بكثير. اليوم هي لغة كاملة لتطوير الخوادم والأتمتة والأدوات المساعدة. ومن المهام الرئيسية التي يواجهها كل مطور هي العمل مع نظام الملفات.

\n\n

القدرة على قراءة وكتابة ونقل وحذف الملفات هي الأساس الذي لا يمكن تصور أي مشروع جاد بدونه. سواء كان مسجلًا أو ملف تكوين أو تحميل صور أو تحليل بيانات - كل شيء يحتاج إلى الوصول إلى نظام الملفات.

\n\n

في هذه المقالة، سنستعرض أمثلة عملية للعمل مع نظام الملفات في Node.js. ستتعلم كيفية استخدام الوحدة المدمجة fs، وما هي الطرق المتاحة وكيفية تجنب الأخطاء الشائعة. يمكن تشغيل واختبار كل الكود فورًا.

\n\n

الطرق الأساسية لوحدة fs

\n\n

وحدة fs (نظام الملفات) مضمنة في التثبيت القياسي لـ Node.js. لا تحتاج إلى تثبيتها بشكل منفصل. لبدء العمل، يكفي تضمينها في بداية الملف:

\n\n
const fs = require('fs');\nconst fsPromises = require('fs').promises; // للعمل مع الوعود
\n\n

جميع طرق وحدة fs موجودة في ثلاثة إصدارات:

\n\n
    \n
  • متزامنة - تمنع تنفيذ الكود حتى اكتمال العملية. عادةً ما تحتوي على اللاحقة Sync.
  • \n
  • غير متزامنة مع دوال الاسترجاع - النمط الكلاسيكي لـ Node.js.
  • \n
  • غير متزامنة مع الوعود - النهج الحديث عبر fs.promises.
  • \n
\n\n

في المشاريع الحديثة، يُوصى باستخدام الوعود و async/await. هذا يجعل الكود أنظف وأكثر وضوحًا.

\n\n

قراءة الملفات

\n\n

السيناريو الأكثر شيوعًا هو قراءة محتوى ملف. لنلقِ نظرة على مثال مع ملف نصي data.txt:

\n\n
const fs = require('fs').promises;\n\nasync function readFileExample() {\n    try {\n        const data = await fs.readFile('data.txt', 'utf8');\n        console.log('محتوى الملف:');\n        console.log(data);\n    } catch (err) {\n        console.error('خطأ في قراءة الملف:', err.message);\n    }\n}\n\nreadFileExample();
\n\n

المعامل الثاني 'utf8' يحدد الترميز. إذا حذفته، ستحصل على مخزن مؤقت خام (Buffer). بالنسبة للملفات النصية، حدد الترميز دائمًا.

\n\n

الكتابة في ملف

\n\n

يمكن كتابة البيانات في ملف بطريقتين: استبدال كامل أو إضافة في النهاية.

\n\n

استبدال الملف:

\n
const fs = require('fs').promises;\n\nasync function writeFileExample() {\n    try {\n        await fs.writeFile('output.txt', 'مرحبًا، نظام الملفات!');\n        console.log('تم كتابة الملف بنجاح');\n    } catch (err) {\n        console.error('خطأ في الكتابة:', err.message);\n    }\n}\n\nwriteFileExample();
\n\n

الإضافة في نهاية الملف:

\n
const fs = require('fs').promises;\n\nasync function appendFileExample() {\n    try {\n        await fs.appendFile('log.txt', `إدخال جديد: ${new Date().toISOString()}\\n`);\n        console.log('تمت إضافة البيانات');\n    } catch (err) {\n        console.error('خطأ في الإضافة:', err.message);\n    }\n}\n\nappendFileExample();
\n\n

طريقة appendFile مثالية لتسجيل السجلات أو تجميع البيانات.

\n\n

إدارة الدلائل والملفات

\n\n

العمل مع نظام الملفات لا يقتصر على القراءة والكتابة. غالبًا ما تحتاج إلى إنشاء مجلدات، أو التحقق من وجود ملفات، أو حذفها.

\n\n

إنشاء وحذف الدلائل

\n\n
const fs = require('fs').promises;\n\nasync function manageDirectories() {\n    try {\n        // إنشاء دليل (إذا لم يكن موجودًا)\n        await fs.mk                

المدونات

توصيات الكتب