التعامل مع المجلدات في Node.js
يوفر مُعامل Node.js الأساسي fs
العديد من الطرق المفيدة التي يمكنك استخدامها للعمل مع المجلدات.
التحقق من وجود مجلد
استخدم fs.access()
(ونظيره القائم على الوعود fsPromises.access()
) للتحقق من وجود المجلد وإمكانية وصول Node.js إليه باستخدام أذوناته.
const fs = require('node:fs');
try {
await fs.promises.access('/Users/joe');
} catch (err) {
throw err;
}
إنشاء مجلد جديد
استخدم fs.mkdir()
أو fs.mkdirSync()
أو fsPromises.mkdir()
لإنشاء مجلد جديد.
const fs = require('node:fs');
const folderName = '/Users/joe/test';
try {
fs.mkdirSync(folderName);
} catch (err) {
console.error(err);
}
قراءة محتويات دليل
استخدم fs.readdir()
أو fs.readdirSync()
أو fsPromises.readdir()
لقراءة محتويات الدليل.
تقوم هذه القطعة من التعليمات البرمجية بقراءة محتويات المجلد، سواء الملفات أو المجلدات الفرعية، وإرجاع مسارها النسبي:
const fs = require('node:fs');
const folderPath = '/Users/joe';
fs.readdirSync(folderPath).map(fileName => {
return path.join(folderPath, fileName);
});
يمكنك الحصول على المسار الكامل:
fs.readdirSync(folderPath)
.map(fileName => path.join(folderPath, fileName));
يمكنك أيضًا تصفية النتائج لإرجاع الملفات فقط، واستبعاد المجلدات:
const fs = require('node:fs');
const isFile = fileName => !fileName.includes(path.sep);
fs.readdirSync(folderPath)
.map(fileName => path.join(folderPath, fileName))
.filter(isFile);
إعادة تسمية مجلد
استخدم fs.rename()
أو fs.renameSync()
أو fsPromises.rename()
لإعادة تسمية المجلد. المعلمة الأولى هي المسار الحالي، والثانية هي المسار الجديد:
const fs = require('node:fs');
fs.rename('/Users/joe', '/Users/roger', err => {
if (err) {
console.error(err);
}
});
fs.renameSync()
هو الإصدار المتزامن:
const fs = require('node:fs');
try {
fs.renameSync('/Users/joe', '/Users/roger');
} catch (err) {
console.error(err);
}
fsPromises.rename()
هو الإصدار القائم على الوعود:
const fs = require('node:fs/promises');
async function example() {
try {
await fs.rename('/Users/joe', '/Users/roger');
} catch (err) {
console.log(err);
}
}
example();
إزالة مجلد
استخدم fs.rmdir()
أو fs.rmdirSync()
أو fsPromises.rmdir()
لإزالة مجلد.
const fs = require('node:fs');
fs.rmdir(dir, err => {
if (err) {
throw err;
}
console.log(`${dir} is deleted!`);
});
لإزالة مجلد يحتوي على محتويات، استخدم fs.rm()
مع الخيار { recursive: true }
لإزالة المحتويات بشكل متكرر.
يجعل { recursive: true, force: true }
من الممكن تجاهل الاستثناءات إذا لم يكن المجلد موجودًا.
const fs = require('node:fs');
fs.rm(dir, { recursive: true, force: true }, err => {
if (err) {
throw err;
}
console.log(`${dir} is deleted!`);
});