تمرين - العمل مع نظام الملفات

مكتمل

يمكنك استخدام .NET للبحث عن معلومات حول الملفات والمجلدات وإرجاعها.

تمتلك Tailwind Traders العديد من المتاجر الفعلية في جميع أنحاء العالم. كل ليلة، ينشئ كل متجر ملفا باسم sales.json يحتوي على إجمالي جميع المبيعات لهذا اليوم. يتم تنظيم هذه الملفات في مجلدات مسماة بمعرف المتجر.

إشعار

تستخدم هذه الوحدة النمطية .NET CLI (واجهة سطر الأوامر) وVisual Studio Code للتطوير المحلي. بعد الانتهاء من هذه الوحدة، يمكنك تطبيق المفاهيم التي تعلمتها باستخدام بيئة تطوير مثل Visual Studio (لنظام التشغيل Windows) أو Visual Studio لـ Mac (لنظام التشغيل macOS) أو التطوير المستمرفي Visual Studio Code (لأنظمة التشغيل Windows وLinux وmacOS).

تستخدم هذه الوحدة النمطية .NET 8.0 SDK. تأكد من تثبيت .NET 8.0 عن طريق تشغيل الأمر التالي في الوحدة الطرفية للأوامر المفضلة لديك:

dotnet --list-sdks

يظهر إخراج مشابه للمثال التالي:

6.0.317 [C:\Program Files\dotnet\sdk]
7.0.401 [C:\Program Files\dotnet\sdk]
8.0.100 [C:\Program Files\dotnet\sdk]

تأكد من إدراج إصدار يبدأ بـ 8. إذا لم يتم سرد أي منها أو لم يتم العثور على الأمر، فقم بتثبيت أحدث .NET 8.0 SDK.

استنساخ المشروع

في هذا التمرين، يمكنك كتابة برنامج .NET الذي يبحث في دليل ودلائله الفرعية عن الملفات المسماة sales.json.

تم إنشاء مشروع بداية لك بالفعل. يمكنك استنساخه باستخدام المحطة الطرفية المتكاملة في Visual Studio Code.

  1. فتح Visual Studio Code.

  2. في القائمة الرئيسية، حدد عرض>المحطة الطرفية لفتح نافذة طرفية.

  3. (اختياري) في نافذة المحطة الطرفية، قم بالتغيير إلى دليل تريد نسخ الملفات إليه، مثل c:\MyProjects.

  4. في نافذة المحطة الطرفية، قم بتشغيل الأمر التالي لاستنساخ مشروع البداية والانتقال إلى المشروع المستنسخ:

    git clone https://github.com/MicrosoftDocs/mslearn-dotnet-files && cd mslearn-dotnet-files
    
  5. شغّل الأمر التالي لإنشاء مشروع وحدة تحكم .NET جديد:

    dotnet new console -f net8.0 -n mslearn-dotnet-files -o .
    
  6. شغّل الأمر التالي لفتح مشروع .NET جديد في نفس مثيل Visual Studio Code:

    code -a .
    

    تلميح

    في هذه المرحلة، قد يطالبك Visual Studio Code بأن الأصول المطلوبة لإنشاء المشروع وتشغيله مفقودة.

    لقطة شاشة تعرض مطالبة Visual Studio التي تتيح للمستخدم معرفة أن هناك شيئاً مفقوداً في المشروع.

    حدد المثلث ذي علامة التعجب ثم حدد Relaunch terminal لإضافة الملفات التي تسمح لـ Visual Studio Code بتشغيل المشروع وتصحيحه.

  7. في نافذة Explorer، ضمن mslearn-dotnet-files، قم بتوسيع مجلد stores وكل مجلد من المجلدات ذات الترقيم بداخله.

    لقطة شاشة لنافذة Explorer تعرض بنية مجلد المشروع.

العثور على ملفات sales.json

تنشئ المهام التالية برنامجا للعثور على جميع ملفات sales.json في كافة مجلدات mslearn-dotnet-files المشروع.

تضمين مساحة الاسم System.IO

  1. في نافذة Explorer، حدد Program.cs الملف لفتحه في المحرر.

    لقطة شاشة لنافذة Explorer تُميّز ملف program.cs.

  2. الصق التعليمات البرمجية التالية في السطر الأول من ملف Program.cs لاستيراد مساحتي الاسم System.IO وSystem.Collections.Generic:

    using System.IO;
    using System.Collections.Generic;
    

إشعار

بدءا من .NET 6، يتم تضمين العبارات في التعليمات البرمجية السابقة تلقائيا في مشروع جديد عن طريق مجموعة الخصائص ImplcitUsings . لأنه تم تحديد -f net8.0 العلامة عند إنشاء مشروع وحدة تحكم جديدة، يتم إضافتها ضمنيًا. ومع ذلك، إذا كنت تعمل مع مشروع قديم، فيجب تضمينها في Program.cs الملف، ولا يؤثر ذلك على هذا المشروع إذا تركتها في الملف.

قم بكتابة دالة للعثور على ملفات sales.json

قم بإنشاء دالة جديدة تسمى FindFiles، والتي تأخذ معلمة folderName.

  1. استبدل سطر Console.WriteLine("Hello, World!"); بالتعليمات البرمجية التالية:

    IEnumerable<string> FindFiles(string folderName)
    {
        List<string> salesFiles = new List<string>();
    
        var foundFiles = Directory.EnumerateFiles(folderName, "*", SearchOption.AllDirectories);
    
        foreach (var file in foundFiles)
        {
            // The file name will contain the full path, so only check the end of it
            if (file.EndsWith("sales.json"))
            {
                salesFiles.Add(file);
            }
        }
    
        return salesFiles;
    }
    
  2. أدرج التعليمات البرمجية التالية أسفل عبارات using لاستدعاء دالة FindFiles. يتم تمرير هذه التعليمات البرمجية في اسم مجلد stores كموقع للبحث عن الملفات.

    var salesFiles = FindFiles("stores");
    
    foreach (var file in salesFiles)
    {
        Console.WriteLine(file);
    }
    
  3. اضغط على Ctrl+S (أو Cmd+S macOS) لحفظ ملف Program.cs.

قم بتشغيل البرنامج.

  1. أدخل الأمر التالي في نافذة الوحدة الطرفية لتشغيل البرنامج:

    dotnet run
    
  2. يجب أن يظهر البرنامج الإخراج التالي:

    stores/sales.json
    stores/201/sales.json
    stores/202/sales.json
    stores/203/sales.json
    stores/204/sales.json
    

ممتاز لقد كتبت برنامج سطر أوامر بنجاح، والذي سوف يجتاز جميع المجلدات في دليل stores ويدرج جميع ملفات sales.json التي تم العثور عليها.

في هذا المثال، كان المسار إلى دليل المخازن بسيطا إلى حد ما، وفي دليل العمل للبرنامج. في الوحدة التالية، ستتعلم كيفية إنشاء بنيات معقدة تعمل عبر أنظمة التشغيل باستخدام الفئة Path.

هل واجهتك مشكلة؟

إذا كان لديك أي مشاكل في تشغيل البرنامج، فإليك التعليمات البرمجية الكاملة لملف Program.cs. استبدل محتويات ملف Program.cs بهذه التعليمة البرمجية:

var salesFiles = FindFiles("stores");
    
foreach (var file in salesFiles)
{
    Console.WriteLine(file);
}

IEnumerable<string> FindFiles(string folderName)
{
    List<string> salesFiles = new List<string>();

    var foundFiles = Directory.EnumerateFiles(folderName, "*", SearchOption.AllDirectories);

    foreach (var file in foundFiles)
    {
        // The file name will contain the full path, so only check the end of it
        if (file.EndsWith("sales.json"))
        {
            salesFiles.Add(file);
        }
    }

    return salesFiles;
}