اذهب إلى المحتوى

السؤال

نشر

أحاول الحصول على المجلّدات الموجودة ضمن مجلّد معين في node.js ، وحاولت استخدام path للحصول على مسار المجلّد:

path.dirname(__filename)

لكن حصلت فقط على مسار المجلّد الحالي، كيف يمكنني الوصول وطباعة اسماء جميع المجلّدات الموجودة ضمن هذا المجلّد؟

Recommended Posts

  • 0
نشر

بداية نحتاج الى وحدات path و fs ثم نحتاج الى مسار المجلد باستخدام التابع path.join() ثم نستخدم fs.readdir, هذه الدالة تأخذ معاملين, المعامل الاول المسار والمعامل الثاني callbackFunction وبداخل callbackFunction نقوم بمعالجة الأخطاء ان وجدت واذا لم توجد نقوم بالمرور على قائمة الملفات , مثال لك:

const path = require('path');
const fs = require('fs');

const myPath = path.join(__dirname, 'Test');

fs.readdir(myPath, function (err, listOfFiles) {

    if (err) {
        return console.log(err);
    } 

    listOfFiles.forEach(function (file) {

        console.log(file); 
    });
});

 

  • 1
نشر

يمكنك بشكل مختصر استخدام  readdirSync  من المكتبة fs ضمن node.js بالشكل التالي:

بما أنه يمكن الوصول إلى المجلّد الأساسي وليكن اسمه target_folder:

const { readdirSync } = require('fs')

const all_directories = target_folder =>
  readdirSync(target_folder, { withFileTypes: true })
    .filter(e => e.isDirectory())
    .map(e => e.name)

بحيث تمكننا المكتبة من اختبار محتويات المجلّد في حال كانت مجلّدات أيضاً (أو فيها محتويات أخرى) ونقوم بإعادة اسم هذا العنصر وتجميعها ضمن المتغيّر النهائي: all_directories

ولكن يجب عليك الانتباه إلى الحصول على المسار المطلق absolute بالشكل التالي:

require('path').resolve(__dirname, file)

 

  • 0
نشر

يمكنك جلب محتويات المجلد عن طريق حزم directory-tree إذا اردت الاستغناء عن استخدام 

path.dirname(__filename)

حيث يمكنك تنزيل المكتبة باستخدام الأمر التالي 

npm install directory-tree

ثم يمكنك كتابة الكود التالي 

const directory = require('directory-tree');
const files = dirTree('./files/');
console.log(files);

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...