#1
|
||||
|
||||
الدرس التاسع والأربعون : System.IO - دورة .net 2008
بسم الله الرحمن الرحيم . السلام عليكم ورحمة الله وبركاته . نعود بعد انقطاع وهذه المرة مع .NET **** Class Libraries أو الفئات الاساسية في الدوت نت ، موعدنا اليوم مع الفئة System.IO والتي تنظم كافة عمليات الادخال والاخراج والتعامل مع الملفات . الفئات الاساسية في System.IO : BinaryReader, BinaryWriter : تتيح لك قراءة وكتابة بياناتك على شكل Binary Files . BufferedStream : مخزن مؤقت للبيانات Buffer التي يمكن أن تأخذ طريقها لاحقاً إلى الذاكرة . Directory, DirectoryInfo : مختص بالتعامل مع المجلدات والمعلومات المتعلقة بها . DriveInfo : مختص بالتعامل ومعرفة المعلومات عن وحدات التخزين في جهازك Driver . File, FileInfo : مختص بالتعامل مع الملفات وكل ما يتعلق بها . FileStream : يمكنك من الوصول للملفات وعرض البيانات على شكل Stream . FileSystemWatcher : مراقبة ملف او مجلد واخبارك بالتعديلات التي تطرأ عليه . Path : مختص بالتعامل مع المتغيرات النصية لتحويل المسارات إلى صور مفهومة لنظام التشغيل . StreamWriter, StreamReader : القراءة والكتابة إلى الملفات بصورة نصية . StringWriter, StringReader : نفس السابق ، فقط مع اختلاف ان ال Reader وال Writter يتم انشاءه من ال String . هناك فئات اخرى في هذا المجال من الاسماء ، ولكن هذه هي أشهرها وأكثرها استخداماً . الفوارق بين DirectoryInfo و Directory : الفارق الأساسي هو في ال structure الخاص بها ، حيث ان Directory مشتقة مباشرة من Object اما DirectoryInfo فهي مشتقة من FileStreamInfo المشتقة بدورها من ال Objects ، اما الفارق في التعامل فهو ان الفئة Directory تعرف دوالها من النوع Static بحيث يمكن استخدامها مباشرة ، اما مع DirectoryInfo فالامر مختلف حيث يتطلب الامر تعريف نسخة قبل استخدام الدوال . نفس الامر ينطبق بالتبعية على الفرق بين File و FileInfo ... كلا الفئتين DirectoryInfo و FileInfo تحمل معها الخصائص الاساسية ل FileStreamInfo اضافة لخصائص التعامل مع الملفات والمجلدات ، وهي : Attributes : تختص بتمرير قيم اضافية للمجلد أو الملف عن طريق ال enumeration المسمى FileAttributes . CreationTime : قراءة وكتابة تاريخ الانشاء . Exists : معرفة هل الملف موجود أم لا . Extension : تعيد امتداد الملف . FullName : الحصول على المسار كاملاً للملف أو للمجلد . LastAccessTime : قراءة وكتابة آخر تاريخ للدخول على الملف او المجلد . LastWriteTime : قراءة وكتابة آخر تاريخ للكتابة في هذا الملف او المجلد . Name : معرفة اسم الملف أو المجلد . الفئة DirectoryInfo : اضافة لاحتواءها على الخصائص السابقة من FileStreamInfo ، تحتوي هذه الفئة على الدوال التالية : Create(), CreateSubdirectory() : انشاء مجلد او مجلد فرعي في المسار المحدد . Delete() : حذف المجلد وكامل محتوياته . GetDirectories() : تعيد مصفوفة من الاسماء توضح اسماء المجلدات الفرعية . GetFiles() : تعيد مصفوفة Array من FileInfo تحتوي على كافة الملفات الموجودة في هذا المجلد . MoveTo() : نقل المجلد وكافة محتوياته إلى مكان جديد . Parent : معرفة المجلد الاكبر من هذا المجلد . Root : لمعرفة ال Driver الخاص بهذا المجلد . قبل البدء ، انت بحاجة لتعريف نسخة من هذه الفئة ، يمكنك تمرير المكان الذي تود البدء منه في المشيد Constructor بالشكل التالي مثلاً ( لمسار البرنامج ) : C#: كود PHP:
كود PHP:
C#: كود PHP:
كود PHP:
كود PHP:
C#: كود PHP:
كود PHP:
C#: كود PHP:
كود PHP:
C#: كود PHP:
كود PHP:
C#: كود PHP:
كود PHP:
التعامل مع الفئة Directory لا شيء جديد ، فقط ستفقد الخصائص المتاحة من خلال الفئة FileSystemInfo وفي المقابل لن تكون محتاجاً لتعريف نسخة قبل البدء بالعمل ، لذا يمكنك العمل على الفئة مباشرة بالشكل التالي مثلاً لعملية الحذف : C#: كود PHP:
System.IO.Directory.Delete("C:\ahmed") التعامل مع الفئة DriveInfo : تتيح لك هذه الفئة استعراض ال Drivers في جهازك ومعرفة بعض المعلومات عنها ، هذا المثال مباشرة من كتاب Pro.CSharp 2008 : C#: كود PHP:
كود PHP:
التعامل مع FileInfo : الدوال الرئيسية في هذه الفئة - اضافة بالطبع للخصائص العادية - : AppendText() : انشاء StreamWritter للكتابة في الملف CopyTo() نسخ . Create() انشاء ملف واعادة كائن FileStream CreateText() : انشاء StreamWriter للكتابة في الملف Delete() : حذف الملف Directory : معرفة اسم المجلد DirectoryName : معرفة مسار المجلد Length : معرفة حجم الملف MoveTo() : النقل ، يمكنك تحديد اسم جديد للملف المنقول Name : اسم الملف Open() : فتح الملف مع امكانية القراءة والكتابة وخلافه OpenRead() : فتح الملف للقراءة فقط OpenText() : فتح الملف باستخدام StreamReader OpenWrite() : فتح الملف للكتابة فقط بعيداً عن خواص StreamReader والتي سنتعرف عليها تفصيلاً في جزء لاحق من هذه الدروس . سنتعرف على باقي الخصائص . لانشاء ملف مثلاً باستخدام Create : C#: كود PHP:
مثلاً لمعرفة هل الملف مخفي أم لا ؟ C#: كود PHP:
كود PHP:
C#: كود PHP:
كود PHP:
انشاء وفتح الملفات باستخدام Open : في الكود التالي ستجد اننا نستخدم الدالة Open مع الخاصية FileMode.OpenOrCreate وهي ما تفيد انه لو وجدت الملف قم بفتحه ، لو لم تجده قم بانشاءه : C#: كود PHP:
كود PHP:
هناك حالات أخرى أيضاً لفتح وانشاء الملفات : CreateNew : انشأ ملف جديد مباشرة ، لو وجدته قم بعمل خطأ IOException Create : قم بانشاء ملف ولو وجدته قم بانشاءه فوق الموجود . Open افتح الملف ولو لم تجده قم بعمل خطأ FileNotFoundException OpenOrCreate : افتح الملف لو كان موجود أو انشأه لو لم يكن موجوداً . Truncate : افتح الملف وامسح كافة محتوياته Append : قم بفتح الملف وانتقل لآخره لبدء عملية الكتابة ، لو لم يكن الملف موجوداً قم بفتح واحد جديد والبدء بالكتابة من أوله ، عموماً هي لا تظهر في حالة الفتح باستخدام Open وإنما فقط في حالة OpenWrite . ال FileAccess ايضاً له ثلاث حالات مجموعة في هذا ال enum . كود PHP:
كود PHP:
مثل ما سبق ، عدا انك ستكون ملزماً بنوع واحد فقط من العمليات . فتح الملفات باستخدام OpenText : الفارق الوحيد هو ان القيمة المعادة تكون من نوع StreamReader وليس FileStream ، بالشكل التالي مثلاً : C#: كود PHP:
كود PHP:
الفتح باستخدام CreateText و AppendText : مثل السابقة ، الفارق فقط يمكن ان القيمة المعادة ستكون من نوع StreamWritter . كود PHP:
هناك دوال أخرى جديدة في الفئة لعمليات القراءة والكتابة هي : ReadAllBytes() : قراءة البيانات على شكل array of bytes ReadAllLines() : قراءة البيانات على شكل مصفوفة من الاسطر . ReadAllText() : قراءة جميع البيانات كتلة واحدة . WriteAllBytes() : كتابة byte by byte WriteAllLines() : الكتابة على شكل اسطر . WriteAllText() : الكتابة ككتلة واحدة . ويمكن استخدامهم بالشكل التالي مثلاً - من كتاب ProCSharp 2008: C#: كود PHP:
كود PHP:
*** في .net ، يمكن للفئة إذا كانت implemented ل IDisposable ان نقوم بتعريفها في مكان ومن ثم حذفها خارج هذا النطاق بالشكل التالي مثلاً : C#: كود PHP:
كود PHP:
C#: كود PHP:
كود PHP:
والله الموفق ... والسلام عليكم ورحمة الله وبركاته .
|
|
|
المواضيع المتشابهه | ||||
الموضوع | كاتب الموضوع | المنتدى | مشاركات | آخر مشاركة |
الدرس الرابع والعشرون : System.Object دورة .net 2008 | khaledbelal | دورة .NET 2008 من منتدى فيجوال بيسك للعرب | 1 | 03-02-2011 03:55 PM |
الدرس الحادي والخمسون : System.IO - الجزء الثالث والأخير - دورة .net 2008 | khaledbelal | دورة .NET 2008 من منتدى فيجوال بيسك للعرب | 0 | 03-01-2010 01:52 PM |
الدرس الخمسون : System.IO - الجزء الثاني - دورة .net 2008 | khaledbelal | دورة .NET 2008 من منتدى فيجوال بيسك للعرب | 0 | 03-01-2010 01:37 PM |
الدرس التاسع عشر : ال Encapsulation دورة .net 2008 | khaledbelal | دورة .NET 2008 من منتدى فيجوال بيسك للعرب | 0 | 02-20-2010 03:07 PM |
الدرس التاسع : ال Enumeration دورة .net 2008 | khaledbelal | دورة .NET 2008 من منتدى فيجوال بيسك للعرب | 0 | 02-18-2010 04:27 PM |