Skip to content

التعامل مع المجلدات في Node.js

يوفر مُعامل Node.js الأساسي fs العديد من الطرق المفيدة التي يمكنك استخدامها للعمل مع المجلدات.

التحقق من وجود مجلد

استخدم fs.access() (ونظيره القائم على الوعود fsPromises.access()) للتحقق من وجود المجلد وإمكانية وصول Node.js إليه باستخدام أذوناته.

javascript
const fs = require('node:fs');

try {
  await fs.promises.access('/Users/joe');
} catch (err) {
  throw err;
}

إنشاء مجلد جديد

استخدم fs.mkdir() أو fs.mkdirSync() أو fsPromises.mkdir() لإنشاء مجلد جديد.

javascript
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() لقراءة محتويات الدليل.

تقوم هذه القطعة من التعليمات البرمجية بقراءة محتويات المجلد، سواء الملفات أو المجلدات الفرعية، وإرجاع مسارها النسبي:

javascript
const fs = require('node:fs');
const folderPath = '/Users/joe';
fs.readdirSync(folderPath).map(fileName => {
  return path.join(folderPath, fileName);
});

يمكنك الحصول على المسار الكامل:

javascript
fs.readdirSync(folderPath)
  .map(fileName => path.join(folderPath, fileName));

يمكنك أيضًا تصفية النتائج لإرجاع الملفات فقط، واستبعاد المجلدات:

javascript
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() لإعادة تسمية المجلد. المعلمة الأولى هي المسار الحالي، والثانية هي المسار الجديد:

javascript
const fs = require('node:fs');
fs.rename('/Users/joe', '/Users/roger', err => {
  if (err) {
    console.error(err);
  }
});

fs.renameSync() هو الإصدار المتزامن:

javascript
const fs = require('node:fs');
try {
  fs.renameSync('/Users/joe', '/Users/roger');
} catch (err) {
  console.error(err);
}

fsPromises.rename() هو الإصدار القائم على الوعود:

javascript
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() لإزالة مجلد.

javascript
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 } من الممكن تجاهل الاستثناءات إذا لم يكن المجلد موجودًا.

javascript
const fs = require('node:fs');
fs.rm(dir, { recursive: true, force: true }, err => {
  if (err) {
    throw err;
  }
  console.log(`${dir} is deleted!`);
});