اولا ضغط الملفات
----الأرقام من اجل التوضيح ادناه
كود:
Imports System.IO
Imports System.IO.Compression
-----------------------------------------------
--------------------------------------
Try
1-
Dim SourceFile As New FileStream
(Me.TextBox1.Text, FileMode.Open)
2-
Dim MyBuffer(SourceFile.Length) As
Byte
3-
SourceFile.Read(MyBuffer, 0, CInt
(MyBuffer.Length))
4-
SourceFile.Close()
5-
Dim DestinationFile As New
FileStream(Me.TextBox2.Text, FileMode.Create)
6-
Dim CompressionObject As New
GZipStream(DestinationFile,
CompressionMode.Compress)
7-
CompressionObject.Write(MyBuffer, 0,
MyBuffer.Length)
8-
CompressionObject.Close()
Catch ex As Exception
MsgBox(ex.Message)
End Try
1-وضع محتوى الملف الذي نريد ضغطه في متغير
2-نحدد متغير يساوي حجم الملف
3-نقرأ الملف و نضع محتواه في متغير
4-نقوم باغلاق الملف
5-انشاء مسار و الملف الذي سيحتوي الملف المضغوط
6-ثم ننشأ كائن من نوع GZipStream
7-نستخدم الكائن CompressionObject لوضع الملف المراد ضغطه ان صح التعبير
8- نغلق الكائنCompressionObject
و هذا للضغط
-----------------------------------------------
--------------------------------------
اما فك ضغط الملفات:
كود:
Try Dim SourceFile As New FileStream(Me.TextBox3.Text, FileMode.Open) ' هنا سوف نقوم بفك الضغط Dim DecompressionObject As New GZipStream(SourceFile, CompressionMode.Decompress) ' نضع فيه حجم الملف بال بايت Dim SizeOctet(3) As Byte Dim position As Integer = CInt(SourceFile.Length - 4) SourceFile.Position = position 'نأخذ حجم الملف لكى نحوله لأنتيجر SourceFile.Read(SizeOctet, 0, 4) SourceFile.Position = 0 'هنا هنحوله لأنتيجر علشان الـ while Dim SizeFile As Integer = BitConverter.ToInt32(SizeOctet, 0) 'هنا هنحدد حجم البفر(buffer) Dim buffer(SizeFile + 100) As Byte Dim myOffset As Integer = 0 While True 'هنا يتم فك الضغط Dim DecompressedOctets As Integer = DecompressionObject.Read(buffer, myOffset, 100) 'اذا لم يعد هناك نخرج من while Octets If DecompressedOctets = 0 Then Exit While End If 'اعادة تعيين حجم الـ myoffset myOffset += DecompressedOctets End While 'دى شفناها قبل كده Dim DestinatinationFile As New FileStream(Me.TextBox4.Text, FileMode.Create) 'كتابة الملف DestinatinationFile.Write(buffer, 0, SizeFile) 'افراغ ال Bufffers DestinatinationFile.Flush() 'اغلاق الكائن DecompressionObject.Close() Catch ex As Exception MsgBox(ex.Message) End Try
وجزاكم الله خيرا
----الأرقام من اجل التوضيح ادناه
كود:
Imports System.IO
Imports System.IO.Compression
-----------------------------------------------
--------------------------------------
Try
1-
Dim SourceFile As New FileStream
(Me.TextBox1.Text, FileMode.Open)
2-
Dim MyBuffer(SourceFile.Length) As
Byte
3-
SourceFile.Read(MyBuffer, 0, CInt
(MyBuffer.Length))
4-
SourceFile.Close()
5-
Dim DestinationFile As New
FileStream(Me.TextBox2.Text, FileMode.Create)
6-
Dim CompressionObject As New
GZipStream(DestinationFile,
CompressionMode.Compress)
7-
CompressionObject.Write(MyBuffer, 0,
MyBuffer.Length)
8-
CompressionObject.Close()
Catch ex As Exception
MsgBox(ex.Message)
End Try
1-وضع محتوى الملف الذي نريد ضغطه في متغير
2-نحدد متغير يساوي حجم الملف
3-نقرأ الملف و نضع محتواه في متغير
4-نقوم باغلاق الملف
5-انشاء مسار و الملف الذي سيحتوي الملف المضغوط
6-ثم ننشأ كائن من نوع GZipStream
7-نستخدم الكائن CompressionObject لوضع الملف المراد ضغطه ان صح التعبير
8- نغلق الكائنCompressionObject
و هذا للضغط
-----------------------------------------------
--------------------------------------
اما فك ضغط الملفات:
كود:
Try Dim SourceFile As New FileStream(Me.TextBox3.Text, FileMode.Open) ' هنا سوف نقوم بفك الضغط Dim DecompressionObject As New GZipStream(SourceFile, CompressionMode.Decompress) ' نضع فيه حجم الملف بال بايت Dim SizeOctet(3) As Byte Dim position As Integer = CInt(SourceFile.Length - 4) SourceFile.Position = position 'نأخذ حجم الملف لكى نحوله لأنتيجر SourceFile.Read(SizeOctet, 0, 4) SourceFile.Position = 0 'هنا هنحوله لأنتيجر علشان الـ while Dim SizeFile As Integer = BitConverter.ToInt32(SizeOctet, 0) 'هنا هنحدد حجم البفر(buffer) Dim buffer(SizeFile + 100) As Byte Dim myOffset As Integer = 0 While True 'هنا يتم فك الضغط Dim DecompressedOctets As Integer = DecompressionObject.Read(buffer, myOffset, 100) 'اذا لم يعد هناك نخرج من while Octets If DecompressedOctets = 0 Then Exit While End If 'اعادة تعيين حجم الـ myoffset myOffset += DecompressedOctets End While 'دى شفناها قبل كده Dim DestinatinationFile As New FileStream(Me.TextBox4.Text, FileMode.Create) 'كتابة الملف DestinatinationFile.Write(buffer, 0, SizeFile) 'افراغ ال Bufffers DestinatinationFile.Flush() 'اغلاق الكائن DecompressionObject.Close() Catch ex As Exception MsgBox(ex.Message) End Try
وجزاكم الله خيرا