مسارات الملفات في Node.js
مسارات الملفات في النظام
لكل ملف في النظام مسار. في Linux و 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) // .txtimport 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.txtpath.normalize() هي وظيفة مفيدة أخرى ستحاول حساب المسار الفعلي عندما يحتوي على محددات نسبية مثل . أو .. أو شرطات مائلة مزدوجة:
path.normalize('/users/joe/../test.txt') // /users/test.txtلا تتحقق resolve ولا normalize مما إذا كان المسار موجودًا. إنهم ببساطة يحسبون مسارًا بناءً على المعلومات التي حصلوا عليها.