Bonsoir à tous,
Voilà j'aimerai utiliser Gzip donc en cherchant sur le forum j'ai trouvé un même sujet donc je me suis empressé d'utiliser ce code qui est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
 
Public Shared Sub Main(ByVal args As String())
        Try
            DecompressFile("Test.gz", "TestDecompress.txt")
            Console.WriteLine("Fichier Test.gz décompressé vers TestDecompress.txt")
        Catch ex As Exception
            Console.WriteLine(String.Format("{0}: {1}", ex.[GetType](), ex.Message))
        End Try
        Console.ReadLine()
    End Sub
 
Public Shared Sub DecompressFile(ByVal sArchiveFile As String, ByVal sDecompressedFile As String)
        Dim inDecompressedStream As GZipStream = Nothing
        Dim inFileStream As FileStream = Nothing
        Dim outFileStream As FileStream = Nothing
        Dim inBuffer As Byte()
        Dim iInBufferDataLength As Integer
        Dim fiArchiveFile As FileInfo
        Try
            ' Ouverture du fichier à decompresser
            inFileStream = New FileStream(sArchiveFile, FileMode.Open, FileAccess.Read, FileShare.Read)
            ' Creation du flux de decompression
            inDecompressedStream = New GZipStream(inFileStream, CompressionMode.Decompress)
            ' 
            fiArchiveFile = New FileInfo(sArchiveFile)
            inBuffer = New Byte(Convert.ToInt32(fiArchiveFile.Length) * 20) {}
            ' La decompression se fait en lisant le flux GzipStream
            ' On utilise  cette fonction maison car Stream.Length n'est
            ' pas disponible pour GzipStream. A la sortie de cette fonction, inBuffer
            ' contient les données non compressées
            iInBufferDataLength = ReadAllBytesFromStream(inDecompressedStream, inBuffer)
            ' Creation du fichier decompressé
            outFileStream = New FileStream(sDecompressedFile, FileMode.CreateNew, FileAccess.Write, FileShare.Read)
            outFileStream.Write(inBuffer, 0, iInBufferDataLength)
        Finally
            ' Fermeture flux ouverts
            If inFileStream IsNot Nothing Then
                inFileStream.Close()
            End If
            If inDecompressedStream IsNot Nothing Then
                inDecompressedStream.Close()
            End If
            If outFileStream IsNot Nothing Then
                outFileStream.Close()
            End If
        End Try
    End Sub
 
    Private Shared Function ReadAllBytesFromStream(ByVal stream As GZipStream, ByRef buffer As Byte()) As Integer
        Dim iOffset As Integer = 0
        Dim iTotalBytesRead As Integer = 0
        Dim iBytesRead As Integer = 0
        ' Le buffer doit au moins avoir 4ko en taille
        If buffer.Length < 4096 Then
            Array.Resize(Of Byte)(buffer, 4096)
        End If
        ' La decompression se fait en lisant le flux GzipStream
        ' On utilise  cette fonction maison car Stream.Length n'est
        ' pas disponible pour GzipStream
        While True
            iBytesRead = stream.Read(buffer, iOffset, 4096)
            If iBytesRead = 0 Then
                Exit While
            End If
            iOffset += iBytesRead
            iTotalBytesRead += iBytesRead
            If buffer.Length < (iOffset + 4096) Then
                Array.Resize(Of Byte)(buffer, 2 * buffer.Length)
            End If
        End While
        Return iTotalBytesRead
    End Function
Super aucune erreur quand je le met, mais j'ai quelques petites questions quand même car je ne suis pas un pro encore donc j'aimerai savoir des détails comme :

- Comment faire pour qu'il regarde si c'est la bonne version utilisée, si non qu'il télécharge le .gz sur un lien spécifié et où mettre ce code exactement ?

- Je dois spécifier quoi à la place de TestDecompress.txt en sachant que j'ai plusieurs dossiers/fichiers ? Et comment utiliser ce code plus précisemment ?

Voilà pour l'instant je pense ne pas avoir d'autre question.