الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

معلومة/Compress and Decompress Data

مغلق
بدأه SOLO.NET في 26 نوفمبر 2005 · 5 رد · 3,277 مشاهدة · في قسم الدروس والمواضيع المتميزة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

فضاء اسماء جديد فى اطار العمل الجديد .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

بالتوفيق للجميع

ولا حول ولا قوة الا بالله العلى العظيم

AppDemo.rar

VB.NET and C# Comparison

http://www.harding.edu/fmccown/vbnet_csharp_comparison.html

002.gif

=-=-=-=-=-=-=
ذو العلم يشقى فى النعيم بعلمه .:. واخو الجهالة فى الشقاوة ينعم
=-=-=-=-=-=-=
يا من بدنياه اشتغل . قد غره طول الأمل . فالموت يأتى بغتة . والقبر صندوق العمل
=-=-=-=-=-=-=
ان لم تستطع ان تجد ما تفعله فافعل ما لم تسطع ان تجده

screen_shot_2011-05-19_at_12.44.49_pm.pn

#2

أخ SOLO.NET

شكرا لك على المعلومة بس أنا لسا ما جربت الكود بس عندي سؤال

هلق وقت عم تستخدم خاصية الضغط فينا نعمل برنامج ضغط وتفكيك ملفات متل winZip مثلا والا هون لازم ينضغط كل ملف إلى ملف مستقل يعني هل أستطيع عمل ملف مضغوط واحد يحتوي على عدة ملفات مضغوطة واستعادتها عند الحاجة؟

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#4

بارك الله فيكم

اخى samerselo لا يمكنك عمل ارشفة او التعامل مع ملفات zip او غيرها فقط يمكنك ظغط مجرى بيانات الى ملف واحد

ما تريده يمكنك الحصول عليه من هذا الرابطhttp://www.icsharpcode.net/OpenSource/Shar...ib/Default.aspx

VB.NET and C# Comparison

http://www.harding.edu/fmccown/vbnet_csharp_comparison.html

002.gif

=-=-=-=-=-=-=
ذو العلم يشقى فى النعيم بعلمه .:. واخو الجهالة فى الشقاوة ينعم
=-=-=-=-=-=-=
يا من بدنياه اشتغل . قد غره طول الأمل . فالموت يأتى بغتة . والقبر صندوق العمل
=-=-=-=-=-=-=
ان لم تستطع ان تجد ما تفعله فافعل ما لم تسطع ان تجده

screen_shot_2011-05-19_at_12.44.49_pm.pn

#5

شكرا لك أخي

وجزاك الله خيرا

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#6

مساء الخير :::...

شكرا لك يا اخى على هذه المعلومات

هذا الموضوع مغلق.

مواضيع مشابهة