العمل مع نظام الملفات في C#: من الأساسيات إلى التقنيات المتقدمة
العمل مع نظام الملفات هو إحدى المهام الأساسية عند تطوير أي تطبيق. في C# (.NET) توجد مساحة الأسماء القوية System.IO لهذا الغرض، والتي توفر للمطور مجموعة كاملة من الأدوات لإنشاء وقراءة وكتابة ونقل وحذف الملفات والمجلدات. في هذه المقالة، سنقوم بتحليل جميع العمليات الأساسية مع نظام الملفات بالتفصيل، بدءًا من الأمثلة البسيطة وصولاً إلى التقنيات المتقدمة لمعالجة البيانات.
أساسيات العمل مع الملفات في C#
تتضمن مساحة الأسماء System.IO الفئات File و FileInfo، والتي توفر طرقًا ثابتة ومثيلية لإدارة الملفات. دعنا ننظر في العمليات الأساسية.
قراءة وكتابة الملفات النصية
أبسط طريقة للعمل مع الملفات النصية هي استخدام الطرق الثابتة للفئة File:
using System.IO;
// كتابة نص إلى ملف (ينشئ ملفًا جديدًا أو يستبدل الملف الموجود)string content = "مرحبًا بالعالم! هذا مثال على العمل مع الملفات في C#.";File.WriteAllText(@"C:\\temp\\example.txt", content);
// قراءة كل النص من الملفstring readContent = File.ReadAllText(@"C:\\temp\\example.txt");Console.WriteLine(readContent);
// الإلحاق بنهاية الملفFile.AppendAllText(@"C:\\temp\\example.txt", "تمت إضافة سطر جديد.");العمل مع الملفات الثنائية
للعمل مع البيانات الثنائية، استخدم File.ReadAllBytes و File.WriteAllBytes:
byte[] binaryData = new byte[] { 0x48, 0x65, 0x6C, 0x6C, 0x6F };File.WriteAllBytes(@"C:\\temp\\binary.bin", binaryData);
byte[] readBinary = File.ReadAllBytes(@"C:\\temp\\binary.bin");Console.WriteLine(string.Join(", ", readBinary)); // الإخراج: 72, 101, 108, 108, 111التحقق من وجود الملف وحذفه
قبل تنفيذ العمليات على الملفات، من المفيد دائمًا التحقق من وجودها:
string filePath = @"C:\\temp\\example.txt";
if (File.Exists(filePath)){ Console.WriteLine("الملف موجود. جاري الحذف..."); File.Delete(filePath); Console.WriteLine("تم حذف الملف.");}else{ Console.WriteLine("الملف غير موجود.");}العمل مع الدلائل في C#
لإدارة المجلدات، يتم استخدام الفئات Directory و DirectoryInfo. إنها تسمح بإنشاء ونقل وإعادة تسمية وحذف الدلائل، بالإضافة إلى الحصول على معلومات عنها.
إنشاء وحذف المجلدات
string dirPath = @"C:\\temp\\MyNewFolder";
// إنشاء مجلد (إذا كان موجودًا بالفعل، لا يتم طرح استثناء)Directory.CreateDirectory(dirPath);
// التحقق من الوجودif (Directory.Exists(dirPath)){ Console.WriteLine("تم إنشاء المجلد بنجاح.");}
// حذف المجلد (المعامل الثاني - هل يتم الحذف بشكل متكرر)Directory.Delete(dirPath, recursive: true);Console.WriteLine("تم حذف المجلد.");الحصول على قائمة الملفات والمجلدات الفرعية
تسمح الطرق GetFiles و GetDirectories بالحصول على محتويات الدليل:
string targetDir = @"C:\\temp";
// الحصول على جميع الملفات في الدليلstring[] files = Directory.GetFiles(targetDir);Console.WriteLine("الملفات في الدليل:");foreach (string file in files){ Console.WriteLine($" {Path.GetFileName(file)}");}
// الحصول على جميع المجلدات الفرعيةstring[] subDirs = Directory.GetDirectories(targetDir);Console.WriteLine("المجلدات الفرعية:");foreach (string dir in subDirs){ Console.WriteLine($" {Path.GetFileName(dir)}");}
// البحث باستخدام نمط (على سبيل المثال، جميع الملفات النصية)string[] txtFiles = Directory.GetFiles(targetDir, "*.txt");Console.WriteLine($"تم العثور على {txtFiles.Length} ملف نصي.");العمل مع DirectoryInfo
الفئة DirectoryInfo
المدونات
توصيات الكتب
اقرأ أيضًا