الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

التعامل مع المجلدات (1)

بدأه عبد الله فتحي في 22 أكتوبر 2005 · 11 رد · 2,763 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

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

التجميع 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 والذي قمنا بضبطهما في الإجراء السابق ..

في الختام أتمنى أن تكونوا قد استفدتم، وفي حال وجود تصحيحات أو استفسارات أرجو وضعها هنا وسنسعد بها قطعاً ..

حتى ألقاكم لكم مني خالص التحية

ع . ف . ر

تم تعديل هذه المشاركة بواسطة عبد الله فتحي في 23 أكتوبر 2005 في 16:56

ani.gif
#2

الله يعطيك العافية أخي على هذا الشرح الرائع .....

#3

منتظرين الجزء الثانى

ربنا يكرمك و يوفق الى ما فيه الخير :)

اسأل الله ان يعلمنا ما ينفعنا وان ينفعنا بما علمنا

جزاك الله كل خير اخى فى الله ... شرح رائع جدا و باسلوب منظم جدا

ربنا يوفقك

#4

السلام عليكم ورحمة الله وبركاته

جزاك الله ألف ألف مليون خير ، الشرح ممتاز جدا

ننتظر المزيد

Name : Ahmed H. Alawady

Web Site : Alawady.info

Email : alawady_ahmed@hotmail.com

Tel : +2 012 345 6808

#5

شكرا يا أخ عبد الله ... تتسم دروسك دائما بالتنظيم الجيد ولكن لي تعليق بسيط جدا على الكود .. فلماذا تقوم بعمل ::

string[] XEntries = new string[0];

بالعلم أن الدول التي تستخدمها ترجع أصلا []new string ولذلك من الأفضل عمل ذلك مباشرة :

string[] XFiles;
int X;
XFiles = System.IO.Directory.GetFiles(@"C:\Example", "*.txt");
...... الى نهاية الكود

جزاك الله كل الخير وبانتظار الأجزاء الأخرى.

#Read

http://MoutazShams.blogspot.com

projects003.gif

أعتذر عن التغيب هذه الأيام نظرا للانشغال المريب

#6

رائع جدا اخي عبد الله والله يعطيك الف عافية على المجهود المميز

#7

جزاكم الله خيراً جميعاً ..

أخي الفاضل معتز شكراً على التنبيه ..

وقد قمت بالتعديل في الكود بالأعلى ..

تحياتي ..

ani.gif
#8

السلام عليكم

شكرا لك اخي عبدالله على الشرح الرائع

اتمنى ان نرى الجزء الثاني

بالتوفيق

#9

تسلم اخ عبد الله درسك جميل جدا وشرحك رائع

تحياتى

ولدي إليك وصيتي عهد الأسودْ

العز غايتنا نعيش لكي نسود

و عريننا في الأرض معروف الحدود

فاحم العرين و صنه عن عبث القرود

أظفارنا للمجد قد خُلقت فدى

و نيوبنا سُنَّت بأجساد العدى

و زئيرنا في الأرض مرهوب الصدى

نعلي على جثث الأعادي السؤددا

#10

شكرا أخي الك كثيرا ،،، يعطيك الف عافية ،،، انتا شخص ايجابي.

تحيتي.

#11

السلام عليكم ورحمة الله وبركاته..

الإجراء Move:

يستخدم أيضاً لإعادة تسمية المجلد ReName

جزاك الله خيراً

قال صلى الله عليه وسلم: من قال إذا أصبح: رضيت بالله ربا وبالإسلام دينا وبمحمد نبيا فأنا الزعيم لآخذن بيده حتى أدخله الجنة. الصحيحة/2686

#12

السلام عليكم و رحمة الله وبركاتة

يوجد مشكلة صغيرة أرجو مساعدتى فيها و هى عند نقل مجلد داخل نفس الدريفر مثل من Cالى C يتم النقل لكن لو كان من دريفر الى أخر مثل من CالىD دوما لايتم النقل فأرجو شرح السبب أو كتابة كود مجرب لنقل من دريفر الى أخر وجزاك الله خيرا

تم تعديل هذه المشاركة بواسطة وائل عبد الرحمن في 20 أغسطس 2009 في 12:39

مواضيع مشابهة