العمل مع نظام الملفات في C#: أمثلة عملية لـ .NET

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

العمل مع نظام الملفات في C#: من النظرية إلى التطبيق



العمل مع نظام الملفات هو أحد المهام الأساسية التي يواجهها كل مطور. سواء كان ذلك لتسجيل السجلات، معالجة ملفات التكوين، استيراد البيانات أو إنشاء التقارير - فإن القدرة على قراءة وكتابة وإدارة الملفات بكفاءة في C# (.NET) ضرورية في أي مشروع. في هذه المقالة، سنستعرض أمثلة عملية للعمل مع نظام الملفات في C#، بدءًا من العمليات البسيطة وصولاً إلى معالجة الدلائل.



سنستخدم مساحة الأسماء System.IO التي توفر جميع الفئات اللازمة للتفاعل مع نظام الملفات.



1. الفئات الأساسية للعمل مع الملفات والمجلدات



قبل كتابة الكود، من المهم التعرف على الفئات الرئيسية:



  • File - فئة ثابتة لإنشاء ونسخ وحذف ونقل الملفات.
  • FileInfo - فئة مثيل توفر معلومات حول ملف معين وطرق للعمل معه.
  • Directory - فئة ثابتة للعمل مع المجلدات.
  • DirectoryInfo - فئة مثيل للحصول على معلومات حول مجلد.
  • Path - فئة مساعدة للعمل مع مسارات الملفات.


لنلقِ نظرة على أبسط مثال - التحقق من وجود ملف وإنشائه:



using System;using System.IO;

class Program{ static void Main() { string filePath = @"C:\\Test\\example.txt";

if (File.Exists(filePath)) { Console.WriteLine("الملف موجود."); } else { File.Create(filePath).Close(); Console.WriteLine("تم إنشاء الملف."); } }}


لاحظ: بعد File.Create() نستدعي Close() لتحرير التدفق. في المشاريع الحديثة، من الأفضل استخدام بنية using.



2. قراءة وكتابة الملفات النصية



السيناريو الأكثر شيوعًا هو قراءة وكتابة المعلومات النصية. في C#، هناك فئات ملائمة StreamReader و StreamWriter لهذا الغرض.



2.1 كتابة البيانات إلى ملف



مثال على كتابة أسطر إلى ملف باستخدام StreamWriter:



string path = @"C:\\Test\\log.txt";string[] lines = { "السطر الأول", "السطر الثاني", "السطر الثالث" };

using (StreamWriter writer = new StreamWriter(path, false)){ foreach (string line in lines) { writer.WriteLine(line); }}Console.WriteLine("تم كتابة البيانات.");


المعامل الثاني لمنشئ StreamWriter - false يعني استبدال الملف. إذا تم تحديد true، ستتم إضافة البيانات إلى النهاية.



2.2 قراءة البيانات من ملف



قراءة المحتوى بالكامل أو سطرًا بسطر:



string path = @"C:\\Test\\log.txt";

// قراءة النص بالكامل في سطر واحدstring allText = File.ReadAllText(path);Console.WriteLine("النص الكامل:" + allText);

// قراءة سطرًا بسطرstring[] allLines = File.ReadAllLines(path);Console.WriteLine("سطرًا بسطر:");foreach (string line in allLines){ Console.WriteLine(line);}


بالنسبة للملفات الكبيرة، من الأفضل استخدام StreamReader مع القراءة سطرًا بسطر في حلقة لتجنب تحميل الملف بأكمله في الذاكرة.



using (StreamReader reader = new StreamReader(path)){    string currentLine;    while ((currentLine = reader.ReadLine()) != null)    {        Console.WriteLine(currentLine);    }}


3. العمل مع الملفات الثنائية (FileStream)



عند الحاجة للعمل مع البيانات الثنائية (الصور، الأرشيفات، الكائنات المسلسلة)، يتم استخدام الفئة FileStream. تتيح قراءة وكتابة البيانات على شكل بايتات.



مثال على كتابة وقراءة مصفوفة بايتات:



المدونات

توصيات الكتب