بسم الله الرحمن الرحيم
من الأمور الهامة جداً، والتي لا غنى عنها لأي مبرمج، القدرة الكاملة على التعامل مع الملفات والمجلدات، إذ أنها مخزن البيانات والمعلومات، والتي نستطيع من خلالها التحكم أكثر بالنظام ..
التجميع Assembly mscorlib
--->>> تفرع الأسماء Namespace System.IO
------>>>>>> الفئة Class Directory
فيما يلي سنحاول أن نأخذ فكرة عن التعامل مع المجلدات Directories من خلال الفئة Class Directory .. ونتمنى من الجميع أن يشاركونا بالنقاش والأسئلة ..
الفئة Class Directory
تعد هذه الفئة فئة استاتيكية، أي أننا نستطيع الاستفادة من إجراءاتها ووظائفها دون الحاجة إلى إنشاء نسخة منها، بخلاف الفئة DirectoryInfo والتي سنتحدث عنها في الجزء الثاني لهذا الدرس بإذن المولى ..
تحتوي الفئة Directory على إجراءات ووظائف كثيرة سنتناولها فيما يلي حسب أهميتها ..
الوظيفة CreateDirectory:
وتقوم هذه الوظيفة بإنشاء مجلد جديد فارغ، وذلك في المكان الذي نحدده لها، كالتالي:
( static System.IO.DirectoryInfo CreateDirectory ( System.String path
يمكننا الاستفادة من هذه الوظيفة في تنظيم الملفات الناتجة عن برنامجنا ووضعها في مجلدات فرعية خاصة بها ..
مثال:
System.IO.Directory.CreateDirectory(@"c:\Test");
كما هو واضح يقوم هذا المثال بإنشاء المجلد Test على الـ \:C مباشرة ..
الإجراء Delete:
يقوم هذا الأجراء بحذف مجلد، سواء كان هذا المجلد يحتوي على ملفات ومجلدات فرعية أخرى أم كان فارغاً .. وصيغته كالتالي:
( static void Delete ( System.String path , System.Boolean recursive
يحتاج هذا الإجراء إلى تمرير معاملين:
الأول path من نوع String ويحتوي على مسار المجلد الذي نريد حذفه ..
الثاني recursive من نوع Boolean ويكون False عند حذف المجلدات الفارغة، و True لحذف المجلدات بكل ما تحويه من ملفات ومجلدات أخرى ..
يمكننا الاستغناء عن المعامل الثاني وسيتم التعامل على أنه False ..
مثال:
System.IO.Directory.Delete(@"c:\Test", true);
كما هو واضح سيتم حذف المجلد Test الموجود على الـ \:C وكل المجلدات والملفات المتفرعة منه ..
الإجراء Move:
ويقوم هذا الإجراء بنقل المجلد إلى المكان الذي نحدده له .. وصيغته كالتالي:
( static void Move ( System.String sourceDirName , System.String destDirName
يحتاج هذا الإجراء إلى تمرير معاملين:
الأول sourceDirName من نوع String ويحتوي على مسار المجلد الذي نريد نقله ..
الثاني destDirName من نوع String ويحتوي على المسار الجديد الذي نريد نقل المجلد إليه ..
مثال:
System.IO.Directory.Move(@"C:\Test", @"C:\Example");
كما هو واضح يقوم هذا الكود بنقل المجلد Test إلى المجلد Example على الـ \:C مباشرة ..
الوظيفة Exists:
وتقوم هذه الوظيفة بالتأكد من وجود مجلد أو عدمه .. وتقوم بإرجاع قيمة من نوع Boolean وتكون False في حال عدم وجود المجلد و True في حال وجوده .. وصيغة هذه الوظيفة كالتالي:
( static System.Boolean Exists ( System.String path
تحتاج هذه الوظيفة إلى تمرير مسار المجلد الذي نريد التأكد من وجوده ..
مثال:
if (System.IO.Directory.Exists(@"C:\Example"))
MessageBox.Show("Directory is found");
else
MessageBox.Show("Directory is not found");كما هو واضح يقوم هذا الكود بإرجاع رسالة تفيد بوجود الملف أو عدم وجوده ..
الوظيفة GetFiles:
وتقوم هذه الوظيفة بإرجاع عدد وأسماء الملفات الموجودة في المجلد الحالي .. ويتم إرجاعها في مصفوفة من نوع String .. كالتالي:
( static string[] GetFiles ( System.String path , System.String searchPattern
تحتاج هذه الوظيفة إلى تمرير معاملين:
الأول path من نوع String ويحتوي على مسار المجلد الذي نريد معرفة الملفات الموجودة بداخله ..
الثاني searchPattern من نوع String ويحتوي على التصفية للملفات التي نريدها ..
ويمكننا الاستغناء عن المعامل الثاني وسيتم إرجاع جميع الملفات بدون تصفية ..
مثال:
string[] XFiles;
int X;
XFiles = System.IO.Directory.GetFiles(@"C:\Example", "*.txt");
for ( X = 0; X != XFiles.Length; X++)
{
listBox1.Items.Add(XFiles[X]);
}كما هو واضح يقوم هذا الكود بإضافة الملفات ذات الامتداد txt. والموجودة في المجلد Example إلى مربع القائمة ListBox1 ..
الوظيفة GetDirectories:
شبيهة بالوظيفة السابقة والفرق أن هذه الوظيفة تقوم بإرجاع عدد وأسماء المجلدات الفرعية الموجودة في المجلد الحالي .. ويتم إرجاعها في مصفوفة من نوع String .. كالتالي:
( static string[] GetDirectories ( System.String path , System.String searchPattern
تحتاج هذه الوظيفة إلى تمرير معاملين:
الأول path من نوع String ويحتوي على مسار المجلد الذي نريد معرفة المجلدات الفرعية الموجودة بداخله ..
الثاني searchPattern من نوع String ويحتوي على التصفية للمجلدات التي نريد تحديدها ..
ويمكننا الاستغناء عن المعامل الثاني وسيتم إرجاع جميع المجلدات بدون تصفية ..
مثال:
string[] XDirectories;
int X;
XDirectories = System.IO.Directory.GetDirectories(@"C:\Example", "w*");
for ( X = 0; X != XDirectories.Length; X++)
{
listBox1.Items.Add(XDirectories[X]);
}كما هو واضح يقوم هذا الكود بإضافة المجلدات الفرعية التي تبدأ بالحرف w والموجودة في المجلد Example إلى مربع القائمة ListBox1 ..
الوظيفة GetFileSystemEntries:
وتقوم هذه الوظيفة بإرجاع عدد وأسماء الملفات والمجلدات الموجودة في المجلد الحالي .. ويتم إرجاعها في مصفوفة من نوع String .. كالتالي:
( static string[] GetFileSystemEntries ( System.String path , System.String searchPattern
تحتاج هذه الوظيفة إلى تمرير معاملين:
الأول path من نوع String ويحتوي على مسار المجلد الذي نريد معرفة الملفات والمجلدات الموجودة بداخله ..
الثاني searchPattern من نوع String ويحتوي على التصفية للملفات والمجلدات التي نريد تحديدها ..
ويمكننا الاستغناء عن المعامل الثاني وسيتم إرجاع جميع الملفات والمجلدات بدون تصفية ..
مثال:
string[] XEntries;
int X;
XEntries = System.IO.Directory.GetFileSystemEntries(@"C:\Example");
for ( X = 0; X != XEntries.Length; X++)
{
listBox1.Items.Add(XEntries[X]);
}كما هو واضح يقوم هذا الكود بإضافة الملفات والمجلدات الموجودة في المجلد Example إلى مربع القائمة ListBox1 ..
الوظيفة GetLogicalDrives:
وتقوم هذه الوظيفة بإرجاع عدد وأسماء محركات الأقراص الموجودة في النظام .. كالتالي:
( ) static string[] GetLogicalDrives
لا تحتاج هذه الوظيفة إلى تمرير أي معاملات ..
مثال:
string[] XDrives;
int X;
XDrives = System.IO.Directory.GetLogicalDrives();
for ( X = 0; X != XDrives.Length; X++)
{
listBox1.Items.Add(XDrives[X]);
}كما هو واضح يقوم هذا الكود بإضافة محركات الأقراص الموجودة في النظام إلى مربع القائمة ListBox1 ..
الوظيفة GetDirectoryRoot:
وتقوم هذه الوظيفة بإرجاع قيمة من نوع String تحتوي على أصل المسار المحدد (الـ Root) .. كالتالي:
( static System.String GetDirectoryRoot ( System.String path
تحتاج هذه الوظيفة إلى تمرير معامل واحد فقط يحتوي على مسار المجلد الذي نريد معرفة أصله أو الـ Root الخاص به ..
مثال:
System.Windows.Forms.MessageBox.Show(System.IO.Directory.GetDirectoryRoot(@"C:\Example\Test"));
كما هو واضح يقوم هذا الكود بإرجاع أصل المجلد Test والذي بلاشك سيكون \:C ..
الوظيفة GetParent:
وتقوم هذه الوظيفة بإرجاع قيمة تحتوي على مسار المجلد الأصلي والذي يحوي المجلد المحدد .. كالتالي:
( static System.IO.DirectoryInfo GetParent ( System.String path
تحتاج هذه الوظيفة إلى تمرير معامل واحد فقط يحتوي على مسار المجلد الذي نريد معرفة مسار مجلده الأصلي ..
مثال:
System.Windows.Forms.MessageBox.Show(System.IO.Directory.GetParent(@"C:\Example\Test").ToString());
كما هو واضح يقوم هذا الكود بإرجاع مسار المجلد الأصلي للمجلد Test والذي بلاشك سيكون C:\Example ..
الإجراء SetCurrentDirectory:
ويقوم هذا الإجراء بضبط الدليل الحالي الذي يتم الوقوف عليه .. وتظهر فائدة هذا الإجراء في تشغيل الألعاب بصفة خاصة، حيث يجب أن يكون المجلد الحالي الذي نقف عليه هو نفسه مجلد اللعبة .. وصيغته كالتالي:
( static void SetCurrentDirectory ( System.String path
يحتاج هذا الإجراء إلى تمرير معامل واحد فقط يحتوي على مسار المجلد الذي نريد جعله هو المجلد الحالي ..
مثال:
System.IO.Directory.SetCurrentDirectory(@"C:\Example");
كما هو واضح يقوم هذا المثال بجعل المجلد Example هو المجلد الحالي الذي يتم الوقوف عليه ..
الوظيفة GetCurrentDirectory:
وتقوم هذه الوظيفة بإرجاع قيمة من نوع String تحتوي على مسار المجلد الحالي والذي نقف عليه .. كالتالي:
( ) static System.String GetCurrentDirectory
لا تحتاج هذه الوظيفة إلى تمرير أي معاملات ..
مثال:
System.Windows.Forms.MessageBox.Show(System.IO.Directory.GetCurrentDirectory().ToString());
كما هو واضح يقوم هذا الكود بإظهار رسالة تحتوي على مسار المجلد الحالي الذي نقف عليه، والذي قمنا بضبطه في الإجراء السابق ..
الإجراء SetCreationTime:
ويقوم هذا الإجراء بضبط تاريخ ووقت الإنشاء الخاصين بالمجلد المحدد .. وصيغته كالتالي:
( static void SetCreationTime ( System.String path , System.DateTime creationTime
تحتاج هذه الوظيفة إلى تمرير معاملين:
الأول path من نوع String ويحتوي على مسار المجلد الذي نريد ضبط تاريخ ووقت إنشائه ..
الثاني creationTime من نوع Date ويحتوي على تاريخ ووقت الإنشاء الذي نريد تحديدهما للمجلد ..
مثال:
System.IO.Directory.SetCreationTime(@"C:\Example", System.DateTime.Now);
كما هو واضح يقوم هذا المثال بضبط تاريخ ووقت الإنشاء للمجلد Example للتاريخ والوقت الحالي ..
الوظيفة GetCreationTime:
وتقوم هذه الوظيفة بإرجاع قيمة من نوع Date تحتوي على تاريخ ووقت الإنشاء للمجلد المحدد .. كالتالي:
( static System.DateTime GetCreationTime ( System.String path
تحتاج هذه الوظيفة إلى تمرير مسار المجلد الذي نريد معرفة تاريخ ووقت إنشائه ..
مثال:
System.Windows.Forms.MessageBox.Show(System.IO.Directory.GetCreationTime(@"C:\Example").ToString());
كما هو واضح يقوم هذا الكود بإظهار رسالة تحتوي على تاريخ ووقت الإنشاء للمجلد Example والذي قمنا بضبطهما في الإجراء السابق ..
الإجراء SetLastAccessTime:
ويقوم هذا الإجراء بضبط تاريخ ووقت آخر وصول للمجلد المحدد .. وصيغته كالتالي:
( static void SetLastAccessTime ( System.String path , System.DateTime lastAccessTime
تحتاج هذه الوظيفة إلى تمرير معاملين:
الأول path من نوع String ويحتوي على مسار المجلد الذي نريد ضبط تاريخ ووقت آخر وصول إليه ..
الثاني lastAccessTime من نوع Date ويحتوي على تاريخ ووقت آخر وصول للمجلد ..
مثال:
System.IO.Directory.SetLastAccessTime(@"C:\Example", System.DateTime.Now);
كما هو واضح يقوم هذا الكود بضبط تاريخ ووقت آخر وصول للمجلد Example للتاريه والوقت الحالي ..
الوظيفة GetLastAccessTime:
وتقوم هذه الوظيفة بإرجاع قيمة من نوع Date تحتوي على تاريخ ووقت آخر وصول للمجلد المحدد .. كالتالي:
( static System.DateTime GetLastAccessTime ( System.String path
تحتاج هذه الوظيفة إلى تمرير مسار المجلد الذي نريد معرفة تاريخ ووقت آخر وصول إليه ..
مثال:
System.Windows.Forms.MessageBox.Show(System.IO.Directory.GetLastAccessTime(@"C:\Example").ToString());
كما هو واضح يقوم هذا الكود بإظهار رسالة تحتوي على تاريخ ووقت آخر وصول للمجلد Example والذي قمنا بضبطهما في الإجراء السابق ..
الإجراء SetLastWriteTime:
ويقوم هذا الإجراء بضبط تاريخ ووقت آخر تعديل على المجلد المحدد .. وصيغته كالتالي:
( static void SetLastWriteTime ( System.String path , System.DateTime lastWriteTime
تحتاج هذه الوظيفة إلى تمرير معاملين:
الأول path من نوع String ويحتوي على مسار المجلد الذي نريد ضبط تاريخ ووقت آخر تعديل عليه ..
الثاني lastWriteTime من نوع Date ويحتوي على تاريخ ووقت آخر تعديل على المجلد ..
مثال:
System.IO.Directory.SetLastWriteTime(@"C:\Example", System.DateTime.Now);
كما هو واضح يقوم هذا الكود بضبط تاريخ ووقت آخر وصول للمجلد Example للتاريه والوقت الحالي ..
الوظيفة GetLastWriteTime:
وتقوم هذه الوظيفة بإرجاع قيمة من نوع Date تحتوي على تاريخ ووقت آخر تعديل على المجلد المحدد .. كالتالي:
( static System.DateTime GetLastWriteTime ( System.String path
تحتاج هذه الوظيفة إلى تمرير مسار المجلد الذي نريد معرفة تاريخ ووقت آخر تعديل عليه ..
مثال:
System.Windows.Forms.MessageBox.Show(System.IO.Directory.GetLastWriteTime(@"C:\Example").ToString());
كما هو واضح يقوم هذا الكود بإظهار رسالة تحتوي على تاريخ ووقت آخر تعديل على المجلد Example والذي قمنا بضبطهما في الإجراء السابق ..
في الختام أتمنى أن تكونوا قد استفدتم، وفي حال وجود تصحيحات أو استفسارات أرجو وضعها هنا وسنسعد بها قطعاً ..
حتى ألقاكم لكم مني خالص التحية
ع . ف . ر

