اليوم سنتحدث عن كيفية العمل مع نظام الملفات باستخدام Node.js ، والنظر في العمليات الأساسية التي تتم مع الملفات. تتضمن هذه العمليات ما يلي:
- إنشاء ملف
- قراءة الملف
- كتابة البيانات إلى ملف
- حذف الملف
- إعادة تسمية الملف
الحاجة إلى إجراء مثل هذه العمليات تنشأ في مجموعة متنوعة من الحالات.

وحدة FS
لدى Node.js وحدة نمطية قياسية ، 
fs (اختصار لنظام الملفات) ، والتي توفر أدوات المطور للعمل مع نظام الملفات. يمكنك استيراده إلى المشروع كما يلي:
 var fs = require('fs'); 
يتم عرض أساليب هذه الوحدة في أشكال متزامن وغير متزامن. تقبل وظائف رد الاتصال التي تم تمريرها إلى أساليب غير متزامنة كائن خطأ كمعلمة الأولى ، ويتم إرجاع البيانات عندما كانت العملية ناجحة كمعلمة ثانية. النظر في مثال:
 function fileHandler(){   fs.readFile('textFile.txt', 'utf8', (err, data) => {       if(err) throw err;       console.log(data);   }); } 
طريقة 
.readFile() ، والتي سنتحدث عنها أكثر ، مخصصة لقراءة الملفات. في هذا المثال ، تحتوي وظيفة رد الاتصال على معلمتين - 
err data . الأخطاء التي قد تحدث عند محاولة قراءة ملف تقع في المعلمة الأولى ، البيانات التي تم الحصول عليها بعد عملية ناجحة في المعلمة الثانية. لاحظ أن 
.readFile() طريقة غير متزامنة لوحدة 
fs . يطلق عليه إصدار متزامن 
.readFileSync() . يتم استخدام نهج مماثل لتسمية أساليب الوحدة النمطية الأخرى.
قم بإنشاء ملف جديد
لنبدأ بمثال:
 function fileHandler(){   fs.open('testFile.txt', 'w', (err) => {       if(err) throw err;       console.log('File created');   });  } 
هنا يتم استخدام طريقة 
fs.open() لإنشاء ملف جديد. يستغرق اسم ملف كوسيطة الأولى. حجه الثاني هو العلم الذي يخبر النظام بالضبط ما نريد القيام به مع الملف. في هذه الحالة ، هذه هي العلامة 
w (اختصار للكتابة) ، والتي تشير إلى أننا نريد فتح الملف للكتابة. يمكن أن يقبل الأسلوب 
.open() إشارات متعددة. هؤلاء بعض منهم:
- r: ملف مفتوح للقراءة
- r+: فتح ملف للقراءة والكتابة
- rs: ملف مفتوح للقراءة في الوضع المتزامن
- w: فتح ملف للكتابة
- a: فتح ملف لكتابة البيانات إلى نهاية الملف
- a+: افتح الملف لقراءة وكتابة البيانات إلى نهاية الملف
الآن ، قبل الانتقال إلى المثال التالي ، سنقوم بتحرير ملف 
testFile.txt تم إنشاؤه للتو باستخدام نوع من محرر النصوص. أضف النص التالي إليه:
 This is a test file. We're learning about Node.js File System. The End. 
كتابة البيانات إلى ملف
دعونا نتحدث عن كيفية إضافة شيء إلى ملف:
 function fileHandler(){   fs.appendFile('testFile.txt', ' This line is beyond the end.', (err) => {       if(err) throw err;       console.log('Data has been added!');   }); } 
نحن هنا نستخدم طريقة 
.appendFile() لإلحاق البيانات بنهاية ملف موجود. كحجة أولى ، تقبل هذه الطريقة اسم الملف ، باعتبارها الثانية - البيانات التي يجب إضافتها إلى نهاية الملف. الوسيطة الثالثة هي ، كالعادة ، وظيفة رد اتصال.
بعد تنفيذ التعليمات البرمجية الموضحة أعلاه بنجاح ، ستبدو محتويات الملف كما يلي:
 This is a test file. We're learning about Node.js File System. The End. This line is beyond the end. 
هناك طريقة أخرى لكتابة البيانات إلى ملف. يتضمن استخدام الأسلوب 
.writeFile() . تشبه هذه الطريقة إلى حد كبير 
.appendFile() ، ولكن لديها اختلاف مهم واحد. الحقيقة هي أنه باستخدام طريقة 
.appendFile() ، نضيف بيانات جديدة إلى الملف بعد البيانات الموجودة به بالفعل. وعند استخدام الأسلوب 
.writeFile() ، يتم استبدال محتويات الملف بأخرى جديدة. لنجرب هذه الطريقة:
 function fileHandler(){   fs.writeFile('testFile.txt', "I'm the replacement you've been looking for.", (err) => {       if(err) throw err;       console.log('Data has been replaced!');   }); } 
بعد التشغيل الناجح ، سوف يحتوي الملف على النص التالي:
 I'm the replacement you've been looking for. 
كما ترون ، يتم استبدال محتويات الملف بالكامل بمحتوى جديد.
قراءة الملف
لقراءة الملفات ، توفر الوحدة النمطية 
fs طريقة 
.readFile() ، مثال على الاستخدام الذي رأيناه بالفعل. يأخذ اسم الملف كمعلمة الأولى ، والترميز كما الثانية. المعلمة الثالثة هي وظيفة رد الاتصال. دعونا نحاول طباعة محتويات ملف 
testFile.txt إلى وحدة التحكم باستخدام هذه الطريقة:
 function fileHandler(){   fs.readFile('testFile.txt', 'utf8', (err, data) => {       if(err) throw err;       console.log('--------- [File Data] ---------');       console.log(data);       console.log('--------- [File Data] ---------');   }); } 
هذا ما نحصل عليه.
ملف إخراج البيانات إلى وحدة التحكمالآن دعنا نتحدث عن إعادة تسمية الملفات.
إعادة تسمية الملف
لإعادة تسمية الملفات ، استخدم الأسلوب 
.rename() :
 function fileHandler(){   fs.rename('testFile.txt', 'newTestFile.txt', (err) => {       if(err) throw err;       console.log('File renamed successfully!');   }); } 
الوسيطة الأولى للطريقة هي اسم ملف موجود ، والثاني هو الاسم الجديد لهذا الملف. بعد استدعاء ناجح لهذه الطريقة ، يتحول ملف 
newTestFile.txt إلى 
newTestFile.txt .
حذف الملف
لحذف الملفات ، استخدم طريقة 
.unlink() :
 function fileHandler(){   fs.unlink('newTestFile.txt', (err) => {       if(err) throw err;       console.log('File deleted successfully!');   }); } 
استدعاء ناجحة إلى هذا الأسلوب يحذف ملف 
newTestFile.txt .
النتائج
في هذه المقالة ، درسنا أساسيات العمل مع نظام الملفات في Node.js. إذا كنت تريد إتقان هذا الموضوع بشكل أعمق ، فقم بإلقاء نظرة على 
هذه المادة من دورة نشر Node.js ، واقرأ 
الوثائق الخاصة بوحدة 
fs ، وحاول تجربة كل شيء تتعلمه في الممارسة.
أعزائي القراء! هل تستخدم الوحدة النمطية fs القياسية أو أي شيء آخر للتعامل مع الملفات الموجودة في Node.js؟
