IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

[VB.NET]Décompression avec Gzip


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2011
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 29
    Par défaut [VB.NET]Décompression avec Gzip
    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.

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par Yaoox Voir le message
    - 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 ?
    Comment ça, quelle version ? Un fichier .gz n'a pas de version... De quelle version tu parles ?

    Citation Envoyé par Yaoox Voir le message
    - Je dois spécifier quoi à la place de TestDecompress.txt en sachant que j'ai plusieurs dossiers/fichiers ?
    Ben tu mets le vrai nom du fichier. En général, c'est le nom du fichier .gz sans l'extension .gz

    Citation Envoyé par Yaoox Voir le message
    Et comment utiliser ce code plus précisemment ?
    Tu passes en paramètre le nom du fichier compressé et le nom du fichier décompressé. Ou alors j'ai pas compris ce que tu comprends pas...

  3. #3
    Membre averti
    Inscrit en
    Janvier 2011
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 29
    Par défaut Re
    Pour l'histoire de version, ça n'a rien à voir avec Gzip ^^ En faite je veux faire en sorte que quand on lance le updater, ca vérifie dans le fichier version.txt par exemple s'il a la bonne version si oui il fait rien si non il télécharge et décompresse.

    Mais je ne sais pas où mettre ce code pour qu'il l'exécute en démarrant l'updater, ensuite
    Pour le testdecompress.txt, juste avant on spécifie le nom de l'archive donc je savais pas quoi mettre, si je dois remettre tout le contenu de l'archive ou rien

    quand j'ai dit comment l'utiliser c'était pour plutôt parler de où mettre le code.

    Merci de la réponse en tout cas mais je ne sais pas trop comment faire encore

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par Yaoox Voir le message
    Pour le testdecompress.txt, juste avant on spécifie le nom de l'archive donc je savais pas quoi mettre, si je dois remettre tout le contenu de l'archive ou rien
    Euh... je comprends rien
    Qu'est-ce que tu appelles "tout le contenu de l'archive" ? une archive GZIP ne contient qu'un seul fichier...

  5. #5
    Membre averti
    Inscrit en
    Janvier 2011
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 29
    Par défaut Re
    Ah ... là tu m'en apprends une bien triste nouvelle , il y a moyen de faire une décompression pour un zip ?

  6. #6
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Citation Envoyé par Yaoox Voir le message
    Ah ... là tu m'en apprends une bien triste nouvelle , il y a moyen de faire une décompression pour un zip ?
    http://www.icsharpcode.net/OpenSource/SharpZipLib/

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par Yaoox Voir le message
    Ah ... là tu m'en apprends une bien triste nouvelle , il y a moyen de faire une décompression pour un zip ?
    Oui, mais pas avec les classes intégrées dans le framework. Il faut utiliser une librairie externe. Perso j'aime bien #ziplib, open source et gratuit

Discussions similaires

  1. Probleme pour décompresser avec gzip
    Par Mathieu Salles dans le forum Général Java
    Réponses: 5
    Dernier message: 23/04/2013, 10h55
  2. [ObjectInputStream]Pb avec GZIP et ByteArrayInputStream
    Par riloo dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 29/04/2004, 17h19
  3. [VB.Net] Probleme avec dialogues (confirm et alert)
    Par crackity_jones666 dans le forum ASP.NET
    Réponses: 5
    Dernier message: 26/11/2003, 22h05
  4. [IB v7.1][C#][ADO.NET] Démarrer avec IB 71
    Par BoeufBrocoli dans le forum InterBase
    Réponses: 14
    Dernier message: 05/08/2003, 12h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo