عملية نسخ الفولدرات - سي شارب - مقـــالات - Top Coder
Welcome to our Site
الدخــول Or تسجـــيل
السبت
2016-12-10
5:35 PM
تسجــــيل | دخـــول
الرئيسية » مقالات » سي شارب

عملية نسخ الفولدرات
عملية نسخ الفولدرات

مقـــدمه
مقالتنا اليوم تتحدث عن موضوع بسيط للغاية , ولكنه قد يؤرق بعضنا , نظراً لعدم وجود داله جاهزه تقوم بنسخ المجلدات مثل داله نسخ الملفات , لذلك افردنا مقالة اليوم لشرح كيفية عمل هذه الداله  
مشكلة نسخ المجلدات
تكمن المشكله في عملية نسخ المجلدات كما قلنا في عدم وجود دالة تقوم بهذه العملية مثلما تقوم به دالة File.Copy الخاص بالملفات , فعملية نسخ الملفات تحتاج الى سطر واحد من الكود لتقوم بنسخ ملف من مكان الى اخر , على عكس المجلدات التي تحتاج الى كود اكبر نسبياً , حيث ان عملية النسخ تنطوي على قدر من التداخل , فالمجلد الواحد يحتوي على ملفات و مجلدات فرعيه , وكل مجلد من المجلدات الفرعيه يحتوي على ملفات اخرى وايضا مجلدات فرعيه اخرى , وتلك المجلدات الاخرى بداخلها ملفات ومجلدات فرعيه ... وهكذا فان الاحتمالات التي قد تواجهها عملية النسخ كثيره , فاحتمال وجود مجلدات فرعيه ذات مستويات مختلفه كثيره جدا , فقد تجد مجلد فرعي في المستوى 100 او 1000 وهكذا , وانت لا تملك سوى داله تقوم بنسخ الملفات , فكيف سيتم نسخ المجلد الاصلي شاملاً كل تلك المستويات الفرعيه بملفاتها ؟؟ وهذه المشكله تواجه يعضنا , وكانت تواجهني شخصيا , ولكن الحل بسيط , فكل ما تحتاجه هو عمل داله تتعامل مع منطق ( الاب - الابن ) , فالمجلد الرئيسي هو اب لكل الملفات والمجلدات التي بداخله في المستوى الاول , وكل مجلد فرعي داخله (ابن) في نفس الوقت اب للملفات والمجلدات التي بداخله - اي في المستوى الثاني من المجلد الاصلي - ... وهكذا , فسوف تتعامل الداله مع كل مجلد كأب ونسخ ما بداخله من ملفات ثم تنتقل الداله لكل مجلد ابن داخل المجلد الاب وتعامله كأب للملفات التي بداخله , ثم تنتقل الى المجلدات الابناء التي بداخله هو الاخر ... وهكذا فهي عملية تكرار لعمليه واحده ولكن مع تغيير المجلد التي ستقوم عليه العمليه .
دالة النسخ
دالة النسخ سوف تحتوي على العملية التي ستتكرر مع كل مجلد أب , و سوف تقوم الداله بالخطوات الاتيه :
1- منظق الدالة سيقوم على التعامل مع مستوى واحد فقط , وهو المستوى الاول للمجلد موضع العمليه .
2- ستقوم الداله بعمل مجلد بنفس اسم المجلد الأب داخل المجلد الهدف - أي المجلد الذي سيتم النسخ داخله - عن طريق داله Directory.CreateDirectory .
3- تقوم الداله بنسخ الملفات التي داخل المجلد الأصلي الى المجلد الجديد الذي تم عمله مؤخراً .
4- تقوم الداله بتكرار نفسها مع كل مجلد فرعي داخل المجلد الأصلي , ويكون ذلك المجلد الفرعي هو المجلد موضع العمليه , فتقوم بتكرار الخطوات السابقه ( 1 : 4 ) مع المجلد باعتبار مجلد أب و سيتغير المجلد الهدف ليصبح المجلد الجديد هو المجلد الهدف .

العملية في بادئ الأمر قد تكون معقده او غير مفهومه , وارجوا ان يقوم الكود بالتفسير قليلاً
Copy Folder
 
حيث ان معاملات الداله هما src وهو المجلد الأصلي الذي نريد نسخه , و dst هو المجلد الذي نريد النسخ داخله ( نريد نسخ المجلد src داخل المجلد dst ) , ونستخدم كلاس DirectoryInfo للمساعده في عملية النسخ , وكما نرى فان الخطوات التي تم شرحها من قبل تقوم بها الداله , في البدايه عمل مجلد جديد بنفس اسم المجلد الاصلي - موضع العمليه - , ثم تقوم بنسخ الملفات داخله , ثم تضع كل مجلد فرعي موضع الأب للملفات والمجلدات بداخله , وتكرر نفسها معه  
ختـــــــام
قد تكون العملية بسيطه , ولكنها هامة جدا , وقد يقف بعضنا امامها في حيرة في بداية الأمر , لذلك وجب علينا تقديمها , ولكن الأهم في الموضوع ان الأمر لا يتوقف عند عملية النسخ نفسها , فمنطق العملية ستجده هو نفسه مع عمليات كثيره جدا قد تواجهها , اخيرا ارجوا ان اكون قد وفقت في شرحها لكم ...
تحميل المشروع
 Written by :  Mohammed Mahmoud
الفئة: سي شارب | أضاف: ham_mody2000 (2011-09-20 3:14 AM)
مشاهده: 1563 | وسمات: copy, copy folders, C#, directory, c sharp, folder | الترتيب: 0.0/0


أترك تعليقك من خلال حسابك على الفيس بوك

تعليقات مشتركي الموقع

مجموع المقالات: 0
إضافة تعليق يستطيع فقط المستخدمون المسجلون
[ التسجيل | دخول ]
طريقة الدخول
بحث
Our Facebook community

تم إطلاق صفحة توب كودر على الفيس بوك

Advertisment
الأحـــدث
hitstatus
Copyright Mohammed Mahmoud © 2016
إنشاء موقع مجاني с uCoz