Un tout petit sample de la classe incroyablement pratique Io.Compression, permettant de compresser et de décompresser des fichiers à l'aide d'un algo puissant, et ce très rapidement. (aussi bien coté code que coté éxecution).
Merci le framework 2 !
Source / Exemple :
Imports System.IO
Imports System.IO.Compression
Public Class HbGzip
Public Shared Function Compress(ByVal cheminSource As String, ByVal cheminCible As String) As String
Try
Dim hbread As New BinaryReader(File.OpenRead(cheminSource))
Dim F_array(hbread.BaseStream.Length) As Byte
hbread.BaseStream.Seek(0, SeekOrigin.Begin)
hbread.BaseStream.Read(F_array, 0, F_array.Length)
hbread.BaseStream.Flush()
hbread.Close()
Dim tmpstream As FileStream = New FileStream(cheminCible, FileMode.OpenOrCreate)
Dim gzipper As GZipStream = New GZipStream(tmpstream, CompressionMode.Compress)
gzipper.Write(F_array, 0, F_array.Length)
gzipper.Flush()
gzipper.Close()
Return "compression effectuée avec succés"
Catch ex As Exception
Return ex.ToString
End Try
End Function
Public Shared Function Decompress(ByVal cheminSource As String, ByVal cheminCible As String) As String
Try
Dim bufferLen As Integer = 1024
Dim hbread As New BinaryReader(File.OpenRead(cheminSource))
Dim gzipper As GZipStream = New GZipStream(hbread.BaseStream, CompressionMode.Decompress)
Dim hbwrite As New BinaryWriter(File.OpenWrite(cheminCible))
Dim F_array(bufferLen) As Byte
Dim readlen As Integer
Dim flag As Boolean = True
Do
readlen = gzipper.Read(F_array, 0, F_array.Length)
If readlen > 0 Then
flag = True
If readlen = (bufferLen + 1) Then hbwrite.Write(F_array, 0, readlen) Else hbwrite.Write(F_array, 0, readlen - 1)
Else
flag = False
End If
Loop While (flag)
hbwrite.Close()
gzipper.Close()
Return "decompression effectuée avec succés"
Catch ex As Exception
Return ex.ToString
End Try
End Function
End Class
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.