اليوم سنتحدث عن كيفية العمل مع نظام الملفات باستخدام 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؟
