بسم الله الرحمن الرحيم
مقدمة :
سنتابع في درسنا هذا ما بدأناه حول ال LINQ And STRING و هذه المرة سوف نرى كيف يمكننا عن طريق تقنية ال LINQ أن نقوم بالبحث عن ملفات في مجلد معين تبعا لل Extension الخاصة به، يعني مثلا لو أردنا ان نقوم بعمل برنامج بحث عن الملفات سوف يكون هذا الدرس اللبنة الأولى في الطريق الى تنفيذ هذا الأمر اذا أتمنى ان يكون هذا الدرس مفيدا و لو قليلا ، فلنبدأ
أحتياجات المثال :
أنشأ مشروع جديد من نوع ال Console Application
قم باستيراد فضاء الأسماء :
Imports System.LINQ
Imports System.IO
الكود :
سوف ترى أن الكود جد سهل و جد قصير لكنه مفيد
كود
Dim Directory As String = "c:\"
Dim LstFiles = My.Computer.FileSystem.GetFiles(Directory)
Dim MyQuery = From File In LstFiles _
Where File.EndsWith(".txt") _
Select File
For Each HTMLFile In MyQuery
Console.WriteLine(HTMLFile)
Next
Console.ReadKey()
شرح الكود :
أولا أنشأنا متغير من نوع STRING ووضعنا فيه مسار المجلد او DRIVE الذي نريد البحث فيه و في مثالنا البحث سيكون في القرص C
ملاحظة :
البحث لن يكون في المجلدات الفرعية بل فقط الملفات الموجود في ال DRIVE اما بخصوص البحث في المجلدات الفرعية فهناك طرق أخرى بعد ذلك و بمساعدة ال MY الجميلة قمنا باستغلال الدالة GetFiles من أجل أخذ لائحة الملفات الموجودة في القرص و طبعا الدالة GetFiles تقوم بأخذ مسار المجلد الذي تأتي منه بلائحة الملفات.
بعد حصولنا على لائحة الملفات نقوما الآن بانشاء ال Query و هي بسيطة وجد مفهومة :
كود
Dim MyQuery = From File In LstFiles _
Where File.EndsWith(".txt") _
Select File
و بكل بساطة تقوم باختيار الملفات من لائحة الملفات تبعا للشرط وهو :
كود
Where File.EndsWith(".txt")
يعني كل ملف نهايته او بالأحرى امتداده ".txt" تقوم ال Query باختياره.
و هكذا لا يبقى لنا الا تنفيذ ال Query عن طريق ال For Each بهذه الطريقة :
كود
For Each HTMLFile In MyQuery
Console.WriteLine(HTMLFile)
Next
وعند تنفيذ الكود تظهر لنا في شاشة ال Console لائحة بجميع الملفات النصية
قد تتسائل ماذا لو اردت البحث عن ملفات بامتدادين او أكثر بمعنى اريد الحصول على جميع الملفات النصية بما فيها .doc .rtf .txt
أقول له ان الحل بسيط ما عليك الا تغيير السطر :
كود
Where File.EndsWith(".txt")
بالسطر التالي :
كود
Where File.EndsWith(".txt") Or File.EndsWith(".doc") Or File.EndsWith(".rtf")
و هكذا تحصل على مرادك
خاتمة :
رأينا في الدروس الثلاثة لحد الآن كيفية التعامل مع نصوص عادية في المرة المقبلة سوف نقوم برؤية كيفية التعامل مع ال Semi-Structured Data in Text Format يعني النصوص ذات تنظيم معين مثل ال CSV
الى ذلك الحين تقبلومني فائق التقدير
و السلام عليكم
Only registered users can write comments.
Please login or register.