العمل مع مسارات الملفات في .NET
يحتوي .NET على آلية مضمنة للعمل مع مسارات نظام الملفات.
في التمرين السابق، لم يكن لدينا العديد من المجلدات لتوزيعها. إذا كان لديك نظام ملفات يضم العديد من الملفات والمجلدات، فقد يكون بناء المسارات يدويًا أمرًا مملاً. لحسن الحظ، يوفر .NET بعض الثوابت المضمنة ووظائف الأداة المساعدة لتسهيل معالجة مسارات الملفات.
هنا، يمكنك التعرف على بعض الثوابت ووظائف الأداة المساعدة في System.IO مساحة الاسم والنوع System.Environment بحيث يمكنك جعل برنامجك أكثر ذكاء ومرونة.
تحديد الدليل الحالي
في بعض الأحيان، لا تعرف أي دليل أو مسار يجب تشغيل البرنامج فيه. لنفترض أنك تريد أن يستخدم البرنامج الدليل الحالي، ولكنك لا تعرف المسار.
يكشف .NET المسار الكامل إلى الدليل الحالي عبر الأسلوب Directory.GetCurrentDirectory.
Console.WriteLine(Directory.GetCurrentDirectory());
إذا قمت بتشغيل التعليمات البرمجية السابقة من مجلد 201 في البنية التالية، Directory.GetCurrentDirectory() فترجع stores\201:
📂 stores
📂 201
العمل مع الدلائل الخاصة
يتم تشغيل .NET في كل مكان: على أنظمة تشغيل Windows وmacOS وLinux وحتى على أنظمة تشغيل الأجهزة المحمولة مثل iOS وAndroid. قد يكون لدى كل نظام تشغيل مفهوم مجلدات النظام الخاصة (مثل الدليل الرئيسي - المخصص للملفات الخاصة بالمستخدم - أو دليل سطح المكتب، أو دليل لتخزين الملفات المؤقتة).
تختلف هذه الأنواع من الدلائل الخاصة لكل نظام تشغيل. سيكون من المرهق محاولة تذكر كل بنية دليل لنظام تشغيل وتنفيذ عمليات تبديل استنادًا إلى نظام التشغيل الحالي.
تحدد قائمة تعداد System.Environment.SpecialFolder الثوابت لاسترداد المسارات إلى مجدات النظام الخاصة.
تقوم التعليمات البرمجية التالية بإرجاع المسار إلى ما يعادل مجلد Windows My Documents، أو دليل HOME الخاص بالمستخدم لأي نظام تشغيل، حتى إذا كانت التعليمات البرمجية قيد التشغيل على Linux:
string docPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
العمل مع المسارات
المسارات هي موضوع يظهر بشكل متكرر بحيث .NET يتضمن فئة تسمى Path خصيصًا للعمل معها.
تقع الفئة Path في مساحة الاسم System.IO لـ .NET ولا تحتاج إلى تثبيت.
أحرف المسار الخاصة
تستخدم أنظمة التشغيل المختلفة أحرفًا مختلفة لفصل مستويات الدليل.
على سبيل المثال، يستخدم Windows شرطة مائلة للخلف (stores\201) ويستخدم macOS الشرطة المائلة للأمام (stores/201).
للمساعدة في استخدام الحرف الصحيح، الفئة Path تحتوي على الحقل DirectorySeparatorChar.
يقوم .NET تلقائيًا بتفسير هذا الحقل في الأحرف الفاصلة القابلة للتطبيق على نظام التشغيل عندما تحتاج إلى إنشاء مسار يدويًا.
Console.WriteLine($"stores{Path.DirectorySeparatorChar}201");
// returns:
// stores\201 on Windows
//
// stores/201 on macOS
ربط المسارات
تعمل الفئة Path مع مفهوم مسارات الملف ومسارات المجلدات، والتي هي عبارة عن سلاسل فقط. يمكنك استخدام الفئة Path لإنشاء مسارات صحيحة تلقائيًا لأنظمة تشغيل معينة.
على سبيل المثال، إذا كنت ترغب في الحصول على المسار إلى مجلد stores/201 يمكنك استخدام الدالة Path.Combine للقيام بذلك.
Console.WriteLine(Path.Combine("stores","201")); // outputs: stores/201
تذكر أنه يجب عليك استخدام Path.Combine الفئة أو Path.DirectorySeparatorChar بدلا من سلاسل الترميز الثابت، لأن برنامجك قد يكون قيد التشغيل على العديد من أنظمة التشغيل المختلفة. تعمل Path الفئة دائما على تنسيق المسارات بشكل صحيح لنظام التشغيل الذي تعمل عليه.
تلميح
لا تهتم الفئة Path بما إذا كانت الأشياء موجودة بالفعل أم لا. المسارات تصورية، وليست فعلية، وتقوم الفئة ببناء وتحليل السلاسل لك.
تحديد ملحقات اسم الملف
Path يمكن أن تخبرك الفئة أيضا بملحق اسم الملف. إذا كان لديك ملف وتريد معرفة ما إذا كان ملف JSON، يمكنك استخدام الدالة Path.GetExtension أم لا.
Console.WriteLine(Path.GetExtension("sales.json")); // outputs: .json
احصل على كل ما تحتاج إلى معرفته عن ملف أو مسار
تحتوي الفئة Pathعلى العديد من الأساليب المختلفة التي تفعل أشياء مختلفة. يمكنك الحصول على معظم المعلومات حول دليل أو ملف باستخدام الفئة DirectoryInfo أو FileInfo على التوالي.
string fileName = $"stores{Path.DirectorySeparatorChar}201{Path.DirectorySeparatorChar}sales{Path.DirectorySeparatorChar}sales.json";
FileInfo info = new FileInfo(fileName);
Console.WriteLine($"Full Name: {info.FullName}{Environment.NewLine}Directory: {info.Directory}{Environment.NewLine}Extension: {info.Extension}{Environment.NewLine}Create Date: {info.CreationTime}"); // And many more
هناك العديد من الخصائص المفيدة وأساليب الأداة المساعدة في PathDirectoryInfoالفئات و وFileInfo، ولكن هذه المفاهيم الأساسية هي تلك التي من المحتمل أن تستخدمها في معظم الأحيان. في التمرين التالي، ستقوم بإنشاء مسارات وتحديد ملفات .json.