![]() |
|
معلومة: System.IO.Packaging namespace - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : الاقسام الاخرى (http://vb4arb.com/vb/forumdisplay.php?fid=74) +--- قسم : قسم المقالات العام (http://vb4arb.com/vb/forumdisplay.php?fid=85) +--- الموضوع : معلومة: System.IO.Packaging namespace (/showthread.php?tid=4144) |
معلومة: System.IO.Packaging namespace - Islam Ibrahim - 17-09-12 بعد إصدار .NET Framework 3.0 أسبح بوسعنا استخدام مجال الأسماء System.IO.Packaging كبديل عن الفئتين DeflateStream وGZipStream لضغط الملفات لأن هاتين الفئتين لاتدعمان تنسيق الملف ZIP بشكل كامل, ومن الواضح أهمية هذه الميزة, لأن استخدام ملفات Zip شائع وقياسي في أنظمة تشغيل Windows,لهذا قدمت Microsoft الفئة System.IO.Packaging.Package, وبالرغم من ذلك فإنها تبدو غامضة, لأن استخدامها نادر, وأرجو بعد هذا الموضوع ان لاتخفى على أحد ويستخدمها الجميع ![]() ملاحظة استخدام الفئة يقتصر فقط على إصدار .Net Framework 3.0 أو أحدث لذلك يمكنك أولا أضف المرجع (WindowsBase) إلى مشروعك لكي يتاح استخدام الفئة بشكل صحيح. أول مايجب القيام به هو فتح ملف حزمة Package (المثال مرفق في آخر الموضوع) كود : Dim objZip As Package = ZipPackage.Open(kZipFile, FileMode.OpenOrCreate, FileAccess.ReadWrite)بعد قيامك بفتح الحزمة يمكنك إضافة ملفات إليها كود : AddFileToZip(objZip, IO.Path.Combine(Application.StartupPath, "Test1.txt"))يجدر الإشارة إلى ان الإجراء AddFileToZip ليس أحد أعضاء الفئة Package وإنما هو إجراء يجب كتابته بشكل يدوي, ويكون مخطط الإجراء كما يلي: تحويل الملف المراد إضافته إلى الحزمة على شكل مصفوفة من النوع Byte, ثم إنشاء Package part وإضافة مصفوفة البايتات إلى هذا الـ part. كود : Private Sub AddFileToZip(ByVal pZip As Package, ByVal pFileToAdd As String)لاحظ أنه من غير اللائق استخدام هذا الإجراء مع ملفات ذات الحجم الكبير. جرب الان التطبيق (المثال المرفق) وسترى النتيجة, افتح الملف c:\temp\MyZipTestFile.zip باستخدام أحد برامج الضغط (winrar) ستلاحظ ظهور ملف آخر مع الملفات المضغوطة, وهو الملف المسمى [Content_Types].xml الآن يمكنك بسهولة استخراج الملفات بدون مشاكل, والإجراء التالي سيقوم بالمهمة كود : Private Sub ExtractFromZip(ByVal pZipFilename As String, ByVal pOutputPath As String)الإجراء السابق يقوم باستخراج الأجزاء parts (أو الملفات) ويستخدم Streams لكتابتها إلى القرص . جرب المثال المرفق لاستخراج الملفات قيود على استخدام هذه الفئة: ابحث عن الملف الذي قام البرنامج بإنشائه (على c:\temp) وأضف ملفا ما يدويا إليه عن طريق برنامج winzip او winrar, بعد ذلك شغل التطبيق المرفق وقم باستخراج الملفات إلى المجلد Test في المجلد debug, ستلاحظ أن الملف الجديد الذي قمت بإضافته غير موجود مع الملفات الأخرى. لتحميل المثال من هنا مترجم بتصرف |