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

الحصول على محتويات مجلّد في node.js

Tamim Fahed

السؤال

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

path.dirname(__filename)

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

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 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

بداية نحتاج الى وحدات 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); 
    });
});

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...