التعامل مع الملفات في السي شارب File Stream
أحد الإمكانيات الهامة في أي لغة برمجة هي التعامل مع الملفات, ففي هذا الدرس سنناقش التعامل مع الملفات في الـ c#.
أي أنه يمكنك عمل برنامج بلفة السي شارب يقوم بإنشاء ملف نصي بداخل القرص لديك و الكتابة بداخله , أو يمكنه قراءة محتويات ملف نصي موجود على القرص لديك .
لكي تتعامل مع الملفات عن طريق الـ C# فإنك تحتاج إلى System.IOnamespace. بحيث أن هذا الـ namespace يحتوي على 3 classes هامة في التعامل مع الملفات و كل منها يستخدم لغرض معين
1- FileStream : يستخدم مع كلا الحالتين القراءة والكتابة في الملف.
2- StreamWriter : للكتابة في الملف .
3- StreamReader :للقراءة من الملف.
والـ syntax الخاص بكل منها كالتالي:
1-
FileStream(string path, System.IO.FileModemode,System.IO.FileAccess access)
بحيث أن path هي مسار الملف المراد فتحه أو إنشاءه,
و mode هي إما create عندما نريد إنشاء ملف في المسار أو open عندما نريد فتح الملف الموجود بالمسار
وأخيرا access هي إما write عندما نريد الكتابة داخل الملف أو read عندما نريد القراءة منه .
2-
StreamWriter (string path)
3-
StreamReader (string path)
يجب أن ألفت انتباهك إلى شيء هام :
وهو أنه يجب كونك حذراً عند فتح الملفات والقراءة منها, أو الكتابة فيها أي العمل معI/O بشكل عام, و ذلك عن طريق استخدام Exception Handling لاصطياد أي خطأ قد يحدث أثناء التعامل معها.
و لا تنسى أن تقوم بإغلاق الملف دائما في الـ Finally block .
وهو أنه يجب كونك حذراً عند فتح الملفات والقراءة منها, أو الكتابة فيها أي العمل معI/O بشكل عام, و ذلك عن طريق استخدام Exception Handling لاصطياد أي خطأ قد يحدث أثناء التعامل معها.
و لا تنسى أن تقوم بإغلاق الملف دائما في الـ Finally block .
لمعرفة المزيد عن Exception Handling تفضل بقراءة درس السيطرة على الأخطاء
الآن نريد أن نكتب برنامج بواسطته ننشئ ملف نصي اسمه " test " داخل القرص الصلب E , أي سيكون مسار هذا الملف "E://test.txt" ونكتب بداخله العبارة التالية:
"working with file is funny"
إذن لا بد أن نعمل عدة خطوات: 1- عملية إنشاء الملف تتطلب إنشاء object من الكلاس FileStream
2- وعملية الكتابة في هذا الملف تتطلب إنشاء object من الكلاس StreamWriter , ثم إغلاق الـ Writer .
"working with file is funny"
إذن لا بد أن نعمل عدة خطوات: 1- عملية إنشاء الملف تتطلب إنشاء object من الكلاس FileStream
2- وعملية الكتابة في هذا الملف تتطلب إنشاء object من الكلاس StreamWriter , ثم إغلاق الـ Writer .
البرنامج كاملا :
كتبنا الأوامر داخل الـ Main مباشرة ً.
السطر 14 : وضعنا مسار الملف المراد إنشاؤه بداخل المتغير "fileName".
بعد ذلك لا حظ استخدامنا للـ try block بحيث أننا وضعنا الأوامر بداخلها لتفادي حصول أي خطأ .
السطر 17:قمنا بتعريف object من الكلاس FileStream ومررنا له البارميتر حسب الـsyntax الذي ذكرناه في بداية الدرس ,مسار الملف ثم نوع العملية هي create ثم العملية داخل الملف هي write.
السطر 19 : قمنا بتعريف object من الكلاس StreamWriter أسميناه "s" لأن العملية كتابة كما ذكرت .
السطر 20 : الكائن "s" نستطيع أن نستخدم معه العديد من الدوال والتي من ضمنهاWriteLine والتي تستخدم للكتابة داخل الملف الذي تم إنشاؤه.
السطر 21 : نقوم بتنظيف كل الـ buffer التي استخدمت عند الكتابة في الملف.
السطرين 22 -23 : تستخدم لإغلاق الـ object من الكلاسين FileStream وStreamWriter بعد أن تم استخدامهما.
السطر 14 : وضعنا مسار الملف المراد إنشاؤه بداخل المتغير "fileName".
بعد ذلك لا حظ استخدامنا للـ try block بحيث أننا وضعنا الأوامر بداخلها لتفادي حصول أي خطأ .
السطر 17:قمنا بتعريف object من الكلاس FileStream ومررنا له البارميتر حسب الـsyntax الذي ذكرناه في بداية الدرس ,مسار الملف ثم نوع العملية هي create ثم العملية داخل الملف هي write.
السطر 19 : قمنا بتعريف object من الكلاس StreamWriter أسميناه "s" لأن العملية كتابة كما ذكرت .
السطر 20 : الكائن "s" نستطيع أن نستخدم معه العديد من الدوال والتي من ضمنهاWriteLine والتي تستخدم للكتابة داخل الملف الذي تم إنشاؤه.
السطر 21 : نقوم بتنظيف كل الـ buffer التي استخدمت عند الكتابة في الملف.
السطرين 22 -23 : تستخدم لإغلاق الـ object من الكلاسين FileStream وStreamWriter بعد أن تم استخدامهما.
السطرين 25 – 28: لاصطياد أي Exception قد يحدث أثناء التعامل مع الملفات .
في الـ Finally block بالأسطر (29- 33) : لابد من التأكد من إغلاق الملف.
بعد تشغيل البرنامج اذهب إلى القرص E ستجد ملف نصي test تم إنشاؤه ولو قمت بفتحه ستجد بداخله الجملة " working with file is funny " .
بعد تشغيل البرنامج اذهب إلى القرص E ستجد ملف نصي test تم إنشاؤه ولو قمت بفتحه ستجد بداخله الجملة " working with file is funny " .
______________________________________________________________
بقي أن نقوم بعمل برنامج آخر وظيفته عكس وظيفة البرنامج السابق حيث سنفتح ملفاً نصياً موجوداً لديك على القرص على مسار معين ثم نقرأ ما بداخله ونقوم بطباعته على الشاشة، والخطوات :
1- عملية فتح الملف تتطلب إنشاء object من الكلاس FileStream كما فعلنا بالسابق.
2- وعملية القراءة في هذا الملف تتطلب إنشاء object من الكلاس StreamReader , ثم إغلاق الـ Readerr .
2- وعملية القراءة في هذا الملف تتطلب إنشاء object من الكلاس StreamReader , ثم إغلاق الـ Readerr .
ولنفرض أن مسار الملف الذي نريد القراءة منه هو الملف الذي أنشأناه بالمثال السابق "E://test.txt" أو أي ملف نصي آخر موجود لديك على القرص تريد أن تقرأ منه البيانات فقط اكتب المسار له كاملا.
البرنامج :
السطر 18 : أنشأت object من الكلاس FileStream حيث حددنا البارمتر الاول هو عبارة عن مسار الملف المراد فتحه , ولكن الاختلاف هنا في الـ FileMode فجعلناهopen لأننا نريد فتح الملف, وفي الـ FileAccess بحيث جعلناه read لأننا نريد القراءة من الملف.
السطر 20: أنشأنا object من الكلاس StreamReader .
السطر 21 : الكائن "r" نستطيع أن نستخدم معه العديد من الدوال والتي من ضمنها الدالة ReadToEnd والتي فائدتها أن تقرأ محتويات كل الملف النصي وتعود بقيمةstring , ولذا قمنا بتعريف المتغير text من النوع string .
السطر 22: جملة طباعة عادية لمحتوى الملف.
ثم في الأسطر 23- 24: قمنا بإغلاق الـ Reader و الكائن من الكلاس FileStream .
السطر 20: أنشأنا object من الكلاس StreamReader .
السطر 21 : الكائن "r" نستطيع أن نستخدم معه العديد من الدوال والتي من ضمنها الدالة ReadToEnd والتي فائدتها أن تقرأ محتويات كل الملف النصي وتعود بقيمةstring , ولذا قمنا بتعريف المتغير text من النوع string .
السطر 22: جملة طباعة عادية لمحتوى الملف.
ثم في الأسطر 23- 24: قمنا بإغلاق الـ Reader و الكائن من الكلاس FileStream .
المخرجات :
و أخيرا اذا كان لديك أي استفسار فلا تتردد بترك السؤال في التعليقات
التعامل مع الملفات في السي شارب File Stream
Consuitech
on
السبت, فبراير 25, 2017
ليست هناك تعليقات: