فضاء اسماء جديد فى اطار العمل الجديد .NET 2 هو System.IO.Compression يقدم لنا هذا المجال فئتان جديدتان للتعامل مع مجارى البيانات Straems الفئتان هما GZipStream and DeflateStream وهما يستخدمان لظغط وفك ظغط مجارى البيانات
والخوارزميات المستخدمه فى هذه الفئات لا تسبب فى فقدان البيانات واقصى حجم تستطيع ظغطه بواسطة هذه الفئات هو 4GB فقط
التطبيق
للقيام بعملية الظغط لابد ان تعرف انه مجرى ظغط البيانات يغلف مجرى بيانات اخر على سبيل المثال،اذا كنت تريد كتابة بيانات مظغوطة الى ملف لابد فى البداية انشاء FileStream لهذا الملف وبعدها نغلف الـ FileStream مع GZipStream او DeflateStream انظر الى الكود التالى:
Dim fsWrite As New FileStream(FileName, FileMode.Create) Dim CompressStream As New GZipStream(fsWrite, CompressionMode.Compress)
الان اذا كنت تريد كتابة البيانات الى ملف استخدم الطريقة Write التابعة للفئة GZipStream حيث سيقوم بكتابة البيانات بعد ظغطها الى الملف المحدد فى FileStream
لاحظ ان GZipStream يمكنك فقط من كتابة البيانات الثنائية فقط لا غير ، لذا اذا كنت تريد كتابة سلسة نصوص مثلا او اى نوع بيانات اخر فعليك بانشاء StreamWriter. الذى يقبل انواع البيانات المعروفة فى .NET ويقوم بتحويلها الى بايتاتBytes انظر الى الكود التالى:
Dim Writer As New StreamWriter(CompressStream)
' Put a compressed line of text into the file.
Writer.Write("This is some text")وعند الانتهاء من الكتابة لا تنسى استدعاء الطرق close و flush ليتم اضافة بياناتك الى الملف
Writer.Flush( ) CompressStream.Flush( ) fsWrite.Close( )
عملية فك ظغط البيانات وقرائتها مشابها لعملية الظغط فستنشئ FileStream للملف المطلوب استخراج البيانات منه واستخدام الطريقة read او انشاء StreamReader وطبعا تغيير الممرر الثانى لمنشئ الفئة GZipStream انظر الى الكود التالى:
fsRead = New FileStream(FileName, FileMode.Open) Dim DecompressStream As New GZipStream(fsRead, CompressionMode.Decompress)
مرحى! الان يمكنك توفير مساحة على قرصك الصلب او قاعدة بياناتك
يوجد مثال فى المرفقات يقوم بقراءة ملف نصى وظغطه وحفظه فى ملف اخر ثنائى لاحظ الفرق فى الحجم
لمعرفة المزيد عن هذه الفئات واعضاءها والخوارزميات المتبعة فى الظغط راجع msdn
بالتوفيق للجميع
ولا حول ولا قوة الا بالله العلى العظيم

