je voudrais savoir s'il y a un moyen de décompresser un résultat compressé avec gzip ou deflate
Je me rends compte que je n'avais pas bien lu la question.
Pour me faire pardonner, voici une solution :
Commence par ajouter les imports nécessaires :
Imports System.Net
Imports System.IO
Imports System.IO.Compression
Puis intègre la classe :
Public Class clsMonSysteme
'tu remarqueras que je fais hériter cette classe du WebClient
Inherits WebClient
'sub du download
Sub Download(ByVal AdresseDistante As String, ByVal FichierDest As String)
Me.DownloadFile(AdresseDistante, FichierDest)
End Sub
'sub upload
Sub Upload(ByVal AdresseDistante As String, ByVal FichierOrigine As String)
Me.UploadFile(IO.Path.Combine(AdresseDistante, IO.Path.GetFileName(FichierOrigine)), Nothing, FichierOrigine)
End Sub
'compression d'un fichier
Sub Compress(ByVal FichierOrigine As String, ByVal DestFile As String)
Dim data() As Byte = IO.File.ReadAllBytes(FichierOrigine)
Using writer As New IO.FileStream(DestFile, IO.FileMode.OpenOrCreate)
Dim ds As New GZipStream(writer, CompressionMode.Compress)
ds.Write(data, 0, data.Length)
End Using
End Sub
'décompression d'un fichier
Sub Decompress(ByVal FichierOrigine As String, ByVal DestFile As String)
Using writer As New IO.FileStream(DestFile, IO.FileMode.OpenOrCreate)
Using reader As New IO.FileStream(FichierOrigine, IO.FileMode.OpenOrCreate)
Dim ds As New GZipStream(reader, CompressionMode.Decompress)
ds.CopyTo(writer)
End Using
End Using
End Sub
End Class
Puis tu peux tester par exemple comme ceci :
'j'instancie ma classe
Dim S As New clsMonSysteme
'ici je compresse un fichier texte en gz
S.Compress("mots.txt", "mots.gz")
'fournir une adresse ftp par exemple du style puis le nom du fichier en paramètre
S.Upload("ftp://login:pass@ftpperso.free.fr/dossier/", "mots.gz")
'pour récupérer un fichier entrer son adresse distante et le nom souhaité à la réception
S.Download("ftp://login:pass@ftpperso.free.fr/dossier/mots.gz", "n_mots.gz")
'puis on le décompresse
S.Decompress("n_mots.gz", "n_mots.txt")
En espérant que ça puisse te servir