التعامل مع المجلدات في Node.js
توفر وحدة fs
الأساسية في Node.js العديد من الطرق المفيدة التي يمكنك استخدامها للتعامل مع المجلدات.
التحقق من وجود مجلد
استخدم 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!`);
});