العمل مع نظام الملفات في JavaScript (Node.js): دليل شامل للمبتدئين

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

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

ابدأ الدورة

العمل مع نظام الملفات في JavaScript (Node.js): دليل شامل للمبتدئين



العمل مع نظام الملفات هو إحدى المهام الأساسية عند إنشاء تطبيقات الخادم أو نصوص الأتمتة أو أدوات معالجة البيانات. في JavaScript (Node.js)، توجد وحدة مدمجة تسمى fs (File System) لهذا الغرض. ستعرّفك هذه المقالة على أساسيات العمل مع الملفات والمجلدات في Node.js، وستوضح كيفية قراءة وكتابة وإنشاء وحذف الملفات، بالإضافة إلى شرح الفرق بين الطرق المتزامنة وغير المتزامنة.



ما هي وحدة fs في Node.js؟



توفر وحدة fs واجهة برمجة تطبيقات (API) للتفاعل مع نظام ملفات نظام التشغيل. تتيح لك تنفيذ عمليات مثل:



  • قراءة محتويات الملفات
  • كتابة البيانات إلى الملفات
  • إنشاء وحذف الدلائل (المجلدات)
  • إعادة تسمية ونسخ الملفات
  • التحقق من وجود الملفات
  • الحصول على معلومات حول الملفات (إحصائيات)


لبدء استخدام وحدة fs، يجب تضمينها في الكود الخاص بك:



const fs = require('fs');


جميع طرق وحدة fs متاحة بثلاثة أشكال: متزامن (باللاحقة Sync)، وغير متزامن مع دوال الاسترجاع (callbacks)، وغير متزامن قائم على الوعود (promises) باستخدام fs.promises. في هذا الدليل، سنركز على النهج الحديث باستخدام async/await.



قراءة الملفات في Node.js



أبسط طريقة لقراءة محتويات ملف هي استخدام طريقة readFile من fs.promises. لنلقِ نظرة على مثال:



const fs = require('fs').promises;

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

readFileExample();


في هذا المثال:

  • نقوم باستيراد fs.promises — إصدار الوحدة الذي يُرجع الوعود (promises).
  • تأخذ الدالة readFile مسار الملف وترميز الأحرف (في هذه الحالة 'utf8').
  • إذا لم يكن الملف موجودًا، فسيتم إلقاء خطأ نقوم بمعالجته في كتلة catch.


إذا كنت بحاجة لقراءة ملف بشكل متزامن (في النصوص البسيطة)، استخدم readFileSync:



const fs = require('fs');

try { const data = fs.readFileSync('example.txt', 'utf8'); console.log(data);} catch (error) { console.error(error.message);}


هام: الطرق المتزامنة تمنع تنفيذ الكود حتى اكتمال العملية. في تطبيقات الخادم (مثل Express)، استخدم دائمًا الطرق غير المتزامنة لتجنب حظر معالجة الطلبات الأخرى.



كتابة البيانات إلى الملفات



لكتابة البيانات إلى ملف، تُستخدم طريقة writeFile. إذا كان الملف موجودًا، فسيتم استبدال محتواه. إذا لم يكن الملف موجودًا، فسيتم إنشاؤه تلقائيًا.



const fs = require('fs').promises;

async function writeFileExample() { try { const content = 'مرحبًا بالعالم! هذه كتابة اختبارية.'; await fs.writeFile('output.txt', content, 'utf8'); console.log('تمت كتابة الملف بنجاح!'); } catch (error) { console.error('خطأ في الكتابة:', error.message); }}

writeFileExample();


إذا كنت ترغب في إضافة بيانات إلى نهاية ملف موجود (دون استبداله)، استخدم العلم appendFile:



const fs = require('fs').promises;

async function appendToFile() { try { await fs.appendFile('log.txt', `إدخال جديد: ${new Date()}`, 'utf8'); console.log('تمت إضافة البيانات إلى نهاية الملف'); } catch (error) { console.error('خطأ:', error.message);\

المدونات

توصيات الكتب