مسارات الملفات في Node.js
مسارات ملفات النظام
كل ملف في النظام له مسار. في لينكس و macOS، قد يبدو المسار هكذا: /users/joe/file.txt
بينما أجهزة الكمبيوتر التي تعمل بنظام Windows لها بنية مختلفة مثل: C:\users\joe\file.txt
تحتاج إلى الانتباه عند استخدام المسارات في تطبيقاتك، حيث يجب مراعاة هذا الاختلاف.
استخدام الوحدة النمطية path
تقوم بتضمين هذه الوحدة في ملفاتك باستخدام:
const path = require('node:path')
ويمكنك البدء في استخدام طرقها.
الحصول على المعلومات من مسار
بإعطاء مسار، يمكنك استخراج المعلومات منه باستخدام هذه الطرق:
dirname
: يحصل على المجلد الرئيسي للملفbasename
: يحصل على جزء اسم الملفextname
: يحصل على امتداد الملف
مثال
const path = require('node:path')
const notes = '/users/joe/notes.txt'
path.dirname(notes) // /users/joe
path.extname(notes) // .txt
import path from 'node:path'
const notes = '/users/joe/notes.txt'
path.dirname(notes) // /users/joe
path.extname(notes) // .txt
يمكنك الحصول على اسم الملف بدون الامتداد من خلال تحديد وسيطة ثانية لـ basename
:
path.basename(notes, path.extname(notes)) // notes
العمل مع المسارات
يمكنك ضم جزئين أو أكثر من مسار باستخدام path.join()
:
path.join('/users', 'joe', 'file.txt') // /users/joe/file.txt
يمكنك الحصول على حساب المسار المطلق لمسار نسبي باستخدام path.resolve()
:
path.resolve('joe.txt') // /Users/joe/joe.txt إذا تم تشغيله من مجلد منزلي
path.resolve('tmp', 'joe.txt') // /Users/joe/tmp/joe.txt إذا تم تشغيله من مجلد منزلي
في هذه الحالة، سيقوم Node.js ببساطة بإضافة /joe.txt
إلى دليل العمل الحالي. إذا قمت بتحديد وسيطة ثانية كمجلد، فسوف تستخدم resolve
الأولى كأساس للثانية.
إذا بدأت الوسيط الأول بسلاش، فهذا يعني أنها مسار مطلق:
path.resolve('/etc', 'joe.txt') // /etc/joe.txt
path.normalize()
هي دالة مفيدة أخرى ستحاول حساب المسار الفعلي عندما يحتوي على محددات نسبية مثل .
أو ..
، أو سلاش مزدوج:
path.normalize('/users/joe/../test.txt') // /users/test.txt
لا يقوم كل من resolve
و normalize
بالتحقق من وجود المسار. إنها تحسب مسارًا فقط بناءً على المعلومات التي حصلت عليها.