بسم الله الرحمن الرحيم
من الأمور الهامة جداً، والتي لا غنى عنها لأي مبرمج، القدرة الكاملة على التعامل مع الملفات والمجلدات، إذ أنها مخزن البيانات والمعلومات، والتي نستطيع من خلالها التحكم أكثر بالنظام ..
التجميع 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 والذي قمنا بضبطهما في الإجراء السابق ..
في الختام أتمنى أن تكونوا قد استفدتم، وفي حال وجود تصحيحات أو استفسارات أرجو وضعها هنا وسنسعد بها قطعاً ..
حتى ألقاكم لكم مني خالص التحية
ع . ف . ر
_____________________________________________________________________________________________________

