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

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

مغلق
بدأه عبد الله فتحي في 23 يونيو 2004 · 3 رد · 6,539 مشاهدة · في قسم الدروس والمواضيع المتميزة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

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

التجميع Assembly mscorlib

--->>> تفرع الأسماء Namespace System.IO

------>>>>>> الفئة Class Directory

فيما يلي سنحاول أن نأخذ فكرة عن التعامل مع المجلدات Directories من خلال الفئة Class Directory .. ونتمنى من الجميع أن يشاركونا بالنقاش والأسئلة ..

الفئة Class Directory

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

تحتوي الفئة Directory على إجراءات ووظائف كثيرة سنتناولها فيما يلي حسب أهميتها ..

الوظيفة CreateDirectory Function:

وتقوم هذه الوظيفة بإنشاء مجلد جديد فارغ، وذلك في المكان الذي نحدده لها، كالتالي:

Function CreateDirectory(ByVal path As String) As System.IO.DirectoryInfo

يمكننا الاستفادة من هذه الوظيفة في تنظيم الملفات الناتجة عن برنامجنا ووضعها في مجلدات فرعية خاصة بها ..

مثال:

System.IO.Directory.CreateDirectory("c:\Test")

كما هو واضح يقوم هذا المثال بإنشاء المجلد Test على الـ \:C مباشرة ..

الإجراء Delete Sub:

يقوم هذا الأجراء بحذف مجلد، سواء كان هذا المجلد يحتوي على ملفات ومجلدات فرعية أخرى أم كان فارغاً .. وصيغته كالتالي:

Sub Delete(ByVal path As String, ByVal recursive As Boolean)

يحتاج هذا الإجراء إلى تمرير معاملين:

الأول path من نوع String ويحتوي على مسار المجلد الذي نريد حذفه ..

الثاني recursive من نوع Boolean ويكون False عند حذف المجلدات الفارغة، و True لحذف المجلدات بكل ما تحويه من ملفات ومجلدات أخرى ..

يمكننا الاستغناء عن المعامل الثاني وسيتم التعامل على أنه False ..

مثال:

System.IO.Directory.Delete("c:\Test", True)

كما هو واضح سيتم حذف المجلد Test الموجود على الـ \:C وكل المجلدات والملفات المتفرعة منه ..

الإجراء Move Sub:

ويقوم هذا الإجراء بنقل المجلد إلى المكان الذي نحدده له .. وصيغته كالتالي:

Sub Move(ByVal sourceDirName As String, ByVal destDirName As String)

يحتاج هذا الإجراء إلى تمرير معاملين:

الأول sourceDirName من نوع String ويحتوي على مسار المجلد الذي نريد نقله ..

الثاني destDirName من نوع String ويحتوي على المسار الجديد الذي نريد نقل المجلد إليه ..

مثال:

System.IO.Directory.Move("C:\Test", "C:\Example")

كما هو واضح يقوم هذا الكود بنقل المجلد Test إلى المجلد Example على الـ \:C مباشرة ..

الوظيفة Exists Sub:

وتقوم هذه الوظيفة بالتأكد من وجود مجلد أو عدمه .. وتقوم بإرجاع قيمة من نوع Boolean وتكون False في حال عدم وجود المجلد و True في حال وجوده .. وصيغة هذه الوظيفة كالتالي:

Function Exists(ByVal path As String) As Boolean

تحتاج هذه الوظيفة إلى تمرير مسار المجلد الذي نريد التأكد من وجوده ..

مثال:

If System.IO.Directory.Exists("C:\Example") Then
MessageBox.Show("Directory is found")
Else
MessageBox.Show("Directory is not found")
End If

كما هو واضح يقوم هذا الكود بإرجاع رسالة تفيد بوجود الملف أو عدم وجوده ..

الوظيفة GetFiles Function:

وتقوم هذه الوظيفة بإرجاع عدد وأسماء الملفات الموجودة في المجلد الحالي .. ويتم إرجاعها في مصفوفة من نوع String .. كالتالي:

()Function GetFiles(ByVal path As String, ByVal searchPattern As String) As String

تحتاج هذه الوظيفة إلى تمرير معاملين:

الأول path من نوع String ويحتوي على مسار المجلد الذي نريد معرفة الملفات الموجودة بداخله ..

الثاني searchPattern من نوع String ويحتوي على التصفية للملفات التي نريدها ..

ويمكننا الاستغناء عن المعامل الثاني وسيتم إرجاع جميع الملفات بدون تصفية ..

مثال:

Dim XFiles() As String
Dim X As Integer
XFiles = System.IO.Directory.GetFiles("C:\Example", "*.txt")
For X = 0 To XFiles.Length - 1
ListBox1.Items.Add(XFiles(X))
Next

كما هو واضح يقوم هذا الكود بإضافة الملفات ذات الامتداد txt. والموجودة في المجلد Example إلى مربع القائمة ListBox1 ..

الوظيفة GetDirectories Function:

شبيهة بالوظيفة السابقة والفرق أن هذه الوظيفة تقوم بإرجاع عدد وأسماء المجلدات الفرعية الموجودة في المجلد الحالي .. ويتم إرجاعها في مصفوفة من نوع String .. كالتالي:

()Function GetDirectories(ByVal path As String, ByVal searchPattern As String) As String

تحتاج هذه الوظيفة إلى تمرير معاملين:

الأول path من نوع String ويحتوي على مسار المجلد الذي نريد معرفة المجلدات الفرعية الموجودة بداخله ..

الثاني searchPattern من نوع String ويحتوي على التصفية للمجلدات التي نريد تحديدها ..

ويمكننا الاستغناء عن المعامل الثاني وسيتم إرجاع جميع المجلدات بدون تصفية ..

مثال:

Dim XDirectories() As String
Dim X As Integer
XDirectories = System.IO.Directory.GetDirectories("C:\Example", "w*")
For X = 0 To XDirectories.Length - 1
ListBox1.Items.Add(XDirectories(X))
Next

كما هو واضح يقوم هذا الكود بإضافة المجلدات الفرعية التي تبدأ بالحرف w والموجودة في المجلد Example إلى مربع القائمة ListBox1 ..

الوظيفة GetFileSystemEntries Function:

وتقوم هذه الوظيفة بإرجاع عدد وأسماء الملفات والمجلدات الموجودة في المجلد الحالي .. ويتم إرجاعها في مصفوفة من نوع String .. كالتالي:

()Function GetFileSystemEntries(ByVal path As String, ByVal searchPattern As String) As String

تحتاج هذه الوظيفة إلى تمرير معاملين:

الأول path من نوع String ويحتوي على مسار المجلد الذي نريد معرفة الملفات والمجلدات الموجودة بداخله ..

الثاني searchPattern من نوع String ويحتوي على التصفية للملفات والمجلدات التي نريد تحديدها ..

ويمكننا الاستغناء عن المعامل الثاني وسيتم إرجاع جميع الملفات والمجلدات بدون تصفية ..

مثال:

Dim XEntries() As String
Dim X As Integer
XEntries = System.IO.Directory.GetFileSystemEntries("C:\Example")
For X = 0 To XEntries.Length - 1
ListBox1.Items.Add(XEntries(X))
Next

كما هو واضح يقوم هذا الكود بإضافة الملفات والمجلدات الموجودة في المجلد Example إلى مربع القائمة ListBox1 ..

الوظيفة GetLogicalDrives Function:

وتقوم هذه الوظيفة بإرجاع عدد وأسماء محركات الأقراص الموجودة في النظام .. كالتالي:

()Function GetLogicalDrives() As String

لا تحتاج هذه الوظيفة إلى تمرير أي معاملات ..

مثال:

Dim XDrives() As String
Dim X As Integer
XDrives = System.IO.Directory.GetLogicalDrives()
For X = 0 To XDrives.Length - 1
ListBox1.Items.Add(XDrives(X))
Next

كما هو واضح يقوم هذا الكود بإضافة محركات الأقراص الموجودة في النظام إلى مربع القائمة ListBox1 ..

الوظيفة GetDirectoryRoot Function:

وتقوم هذه الوظيفة بإرجاع قيمة من نوع String تحتوي على أصل المسار المحدد (الـ Root) .. كالتالي:

Function GetDirectoryRoot(ByVal path As String) As String

تحتاج هذه الوظيفة إلى تمرير معامل واحد فقط يحتوي على مسار المجلد الذي نريد معرفة أصله أو الـ Root الخاص به ..

مثال:

MessageBox.Show(System.IO.Directory.GetDirectoryRoot("C:\Example\Test"))

كما هو واضح يقوم هذا الكود بإرجاع أصل المجلد Test والذي بلاشك سيكون \:C ..

الوظيفة GetParent Function:

وتقوم هذه الوظيفة بإرجاع قيمة تحتوي على مسار المجلد الأصلي والذي يحوي المجلد المحدد .. كالتالي:

Function GetParent(ByVal path As String) As System.IO.DirectoryInfo

تحتاج هذه الوظيفة إلى تمرير معامل واحد فقط يحتوي على مسار المجلد الذي نريد معرفة مسار مجلده الأصلي ..

مثال:

MessageBox.Show(System.IO.Directory.GetParent("C:\Example\Test").ToString)

كما هو واضح يقوم هذا الكود بإرجاع مسار المجلد الأصلي للمجلد Test والذي بلاشك سيكون C:\Example ..

الإجراء SetCurrentDirectory Sub:

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

Sub SetCurrentDirectory(ByVal path As String)

يحتاج هذا الإجراء إلى تمرير معامل واحد فقط يحتوي على مسار المجلد الذي نريد جعله هو المجلد الحالي ..

مثال:

System.IO.Directory.SetCurrentDirectory("C:\Example")

كما هو واضح يقوم هذا المثال بجعل المجلد Example هو المجلد الحالي الذي يتم الوقوف عليه ..

الوظيفة GetCurrentDirectory Function:

وتقوم هذه الوظيفة بإرجاع قيمة من نوع String تحتوي على مسار المجلد الحالي والذي نقف عليه .. كالتالي:

Function GetCurrentDirectory() As String

لا تحتاج هذه الوظيفة إلى تمرير أي معاملات ..

مثال:

MessageBox.Show(System.IO.Directory.GetCurrentDirectory().ToString)

كما هو واضح يقوم هذا الكود بإظهار رسالة تحتوي على مسار المجلد الحالي الذي نقف عليه، والذي قمنا بضبطه في الإجراء السابق ..

الإجراء SetCreationTime Sub:

ويقوم هذا الإجراء بضبط تاريخ ووقت الإنشاء الخاصين بالمجلد المحدد .. وصيغته كالتالي:

Sub SetCreationTime(ByVal path As String, ByVal creationTime As Date)

تحتاج هذه الوظيفة إلى تمرير معاملين:

الأول path من نوع String ويحتوي على مسار المجلد الذي نريد ضبط تاريخ ووقت إنشائه ..

الثاني creationTime من نوع Date ويحتوي على تاريخ ووقت الإنشاء الذي نريد تحديدهما للمجلد ..

مثال:

System.IO.Directory.SetCreationTime("C:\Example", Now)

كما هو واضح يقوم هذا المثال بضبط تاريخ ووقت الإنشاء للمجلد Example للتاريخ والوقت الحالي ..

الوظيفة GetCreationTime Function:

وتقوم هذه الوظيفة بإرجاع قيمة من نوع Date تحتوي على تاريخ ووقت الإنشاء للمجلد المحدد .. كالتالي:

Function GetCreationTime(ByVal path As String) As Date

تحتاج هذه الوظيفة إلى تمرير مسار المجلد الذي نريد معرفة تاريخ ووقت إنشائه ..

مثال:

MessageBox.Show(System.IO.Directory.GetCreationTime("C:\Example").ToString)

كما هو واضح يقوم هذا الكود بإظهار رسالة تحتوي على تاريخ ووقت الإنشاء للمجلد Example والذي قمنا بضبطهما في الإجراء السابق ..

الإجراء SetLastAccessTime Sub:

ويقوم هذا الإجراء بضبط تاريخ ووقت آخر وصول للمجلد المحدد .. وصيغته كالتالي:

Sub SetLastAccessTime(ByVal path As String, ByVal lastAccessTime As Date)

تحتاج هذه الوظيفة إلى تمرير معاملين:

الأول path من نوع String ويحتوي على مسار المجلد الذي نريد ضبط تاريخ ووقت آخر وصول إليه ..

الثاني lastAccessTime من نوع Date ويحتوي على تاريخ ووقت آخر وصول للمجلد ..

مثال:

System.IO.Directory.SetLastAccessTime("C:\Example", Now)

كما هو واضح يقوم هذا الكود بضبط تاريخ ووقت آخر وصول للمجلد Example للتاريه والوقت الحالي ..

الوظيفة GetLastAccessTime Function:

وتقوم هذه الوظيفة بإرجاع قيمة من نوع Date تحتوي على تاريخ ووقت آخر وصول للمجلد المحدد .. كالتالي:

Function GetLastAccessTime(ByVal path As String) As Date

تحتاج هذه الوظيفة إلى تمرير مسار المجلد الذي نريد معرفة تاريخ ووقت آخر وصول إليه ..

مثال:

MessageBox.Show(System.IO.Directory.GetLastAccessTime("C:\Example").ToString)

كما هو واضح يقوم هذا الكود بإظهار رسالة تحتوي على تاريخ ووقت آخر وصول للمجلد Example والذي قمنا بضبطهما في الإجراء السابق ..

الإجراء SetLastWriteTime Sub:

ويقوم هذا الإجراء بضبط تاريخ ووقت آخر تعديل على المجلد المحدد .. وصيغته كالتالي:

Sub SetLastWriteTime(ByVal path As String, ByVal lastWriteTime As Date)

تحتاج هذه الوظيفة إلى تمرير معاملين:

الأول path من نوع String ويحتوي على مسار المجلد الذي نريد ضبط تاريخ ووقت آخر تعديل عليه ..

الثاني lastWriteTime من نوع Date ويحتوي على تاريخ ووقت آخر تعديل على المجلد ..

مثال:

System.IO.Directory.SetLastAccessTime("C:\Example", Now)

كما هو واضح يقوم هذا الكود بضبط تاريخ ووقت آخر وصول للمجلد Example للتاريه والوقت الحالي ..

الوظيفة GetLastWriteTime Function:

وتقوم هذه الوظيفة بإرجاع قيمة من نوع Date تحتوي على تاريخ ووقت آخر تعديل على المجلد المحدد .. كالتالي:

Function GetLastWriteTime(ByVal path As String) As Date

تحتاج هذه الوظيفة إلى تمرير مسار المجلد الذي نريد معرفة تاريخ ووقت آخر تعديل عليه ..

مثال:

MessageBox.Show(System.IO.Directory.GetLastWriteTime("C:\Example").ToString)

كما هو واضح يقوم هذا الكود بإظهار رسالة تحتوي على تاريخ ووقت آخر تعديل على المجلد Example والذي قمنا بضبطهما في الإجراء السابق ..

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

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

ع . ف . ر

_____________________________________________________________________________________________________

تم تعديل هذه المشاركة بواسطة عبد الله فتحي في 12 أكتوبر 2005 في 17:49

ani.gif
#2

السلام عليكم

الاخ عبدالله مشكور على هذا الدرس لكني نسيت ان اذكر انه من الممكن ايضا استخدام DLL اسمه Microsoft Scripting runtime استخدمته في ال.NET لاني لم اعرف عن هذه الكلاسات وهو سهل من ناحية الاستعمال. على كل حال هو شبيه بالبنية المستخدمة في هذه الClasses وانصح باستخدام طريقة الاخ عبدالله

راكان الحنيطي

Be Open Source

opensource-550x4752.gif

#3

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

#4

بالفعل أخي راكان :)

فتفرع الأسما SYSTEM.IO يكاد يكون مثل المكتبة (Microsoft Scripting RunTime (SCRRUN.DLL والذي كنا نستخدمها مع الفيجول بيسيك 6.0 حيث توجد الفئة Folder والتي تساوي Directory هنا.

ولكن تتميز مكتبة الفئات الخاصة بـ NeT Framework. في توافقها، وعدم الحاجة إلى إرفاق مكتبات مع البرنامج، بالإضافة إلى أنها توفر مجموعة موحدة من الوظائف تستخدم عبر اللغات المختلفة.

أخي مصطفى كيف حالك، وإن شاء الله مبسوط مع الدوت نت :)

ani.gif

هذا الموضوع مغلق.

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