Compresser et Décompresser un fichier

rsx602 Messages postés 140 Date d'inscription jeudi 24 août 2006 Statut Membre Dernière intervention 28 août 2014 - 26 mars 2011 à 19:33
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 28 mars 2011 à 09:12
bonjours , je suis sur un projet depuis 2semaines et voila que je suis bloquer sur la compression. je n'arrive pas a trouvé un code qui me permet de compresser et décompresser , tout ce que je trouve me donne des erreurs partout dans le code. Quelqun pourrais maidé?

9 réponses

foliv57 Messages postés 420 Date d'inscription vendredi 17 novembre 2006 Statut Membre Dernière intervention 15 juillet 2014 9
26 mars 2011 à 20:36
Bonjour,

Voici un petit exemple :
Imports System.IO
Imports System.IO.Compression

Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        'Compression

        'Flux qui écrit le fichier compressé sur le disque
        Using writer As New FileStream("C:\Base 1 compressée", FileMode.Create, FileAccess.Write)

            'Flux qui compresse les données emboité dans le flux qui écrit
            Using compresseur As New GZipStream(writer, CompressionMode.Compress)

                'Flux qui permet de lire le fichier source
                Using reader As New FileStream("C:\Base 1.mdb", FileMode.Open, FileAccess.Read)

                    'Transfert les octets du fichier source vers le fichier de destination compressé
                    Transfert(reader, compresseur)

                End Using

            End Using
        End Using

    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        'Décompression

        'Flux qui lit le fichier compressé
        Using reader As New FileStream("C:\Base 1 compressée", FileMode.Open, FileAccess.Read)

            'Flux qui décompresse les données emboité dans le flux qui lit
            Using decompresseur As New GZipStream(reader, CompressionMode.Decompress)

                'Flux qui écrit le décompressé fichier sur le disque
                Using writer As New FileStream("C:\Copie - Base 1.mdb", FileMode.Create, FileAccess.Write)

                    'Transfert les octets du fichier source compressé vers le fichier de destination décompressé
                    Transfert(decompresseur, writer)

                End Using

            End Using
        End Using

    End Sub

    'Permet de transferer les octets d'un flux à un autre
    Private Sub Transfert(ByVal Source As Stream, ByVal Destination As Stream)

        'Taille du buffer de lecture
        Dim bufferSize As Integer = 1024

        'Buffer de lecture
        Dim buffer(bufferSize - 1) As Byte

        'Nombre d'octets lus
        Dim bufferLength As Integer

        'Lecture dans le flux source
        bufferLength = Source.Read(buffer, 0, bufferSize)

        'Tant qu'il y a des octets à lire
        While bufferLength > 0

            'Ecriture du buffer dans le flux de destination
            Destination.Write(buffer, 0, bufferLength)

            'Lecture dans le flux source
            bufferLength = Source.Read(buffer, 0, bufferSize)

        End While

    End Sub
    
End Class
0
rsx602 Messages postés 140 Date d'inscription jeudi 24 août 2006 Statut Membre Dernière intervention 28 août 2014
26 mars 2011 à 20:44
jai une erreur ici : Transfert(reader, compresseur) , il me dit que "Transfert" n'est pas déclaré , je dois le mettre en string? et juste pour etre sur

'Ici c'est le fichier a mettre dans le zip? ou le fichier zip?
Using reader As New FileStream("C:\Base 1 compressée", FileMode.Open, FileAccess.Read)

'et est-ce que ici c'est le fichier a zipper? 
Using writer As New FileStream("C:\Copie - Base 1.mdb", FileMode.Create, FileAccess.Write)


Merci bcp de l'aide , je suis pas très habile avec vb.net mais j'essail de faire mon mieu
0
foliv57 Messages postés 420 Date d'inscription vendredi 17 novembre 2006 Statut Membre Dernière intervention 15 juillet 2014 9
26 mars 2011 à 21:31
jai une erreur ici : Transfert(reader, compresseur) , il me dit que "Transfert" n'est pas déclaré

C'est que vous n'avez pas copié la sub 'Transfert' qui est en bas de mon exemple.
Private Sub Transfert(ByVal Source As Stream, ByVal Destination As Stream)

'Ici c'est le fichier a mettre dans le zip? ou le fichier zip?

Using reader As New FileStream("C:\Base 1 compressée", FileMode.Open, FileAccess.Read)

Lors de la décompression, "C:\Base 1 compressée" est le chemin du fichier compressé, comme son nom l'indique ;) (Attention, ce n'est pas réellement un zip, si vous le nommez "C:\Base 1 compressée.zip", le logiciel winzip ou winrar ne pourra pas le décompresser).
'et est-ce que ici c'est le fichier a zipper?

Using writer As New FileStream("C:\Copie - Base 1.mdb", FileMode.Create, FileAccess.Write)

Lors de la décompression, "C:\Copie - Base 1.mdb" est le chemin du fichier décompressé
0
rsx602 Messages postés 140 Date d'inscription jeudi 24 août 2006 Statut Membre Dernière intervention 28 août 2014
26 mars 2011 à 21:40
un grosss merci !! sa marche A1 !!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
rsx602 Messages postés 140 Date d'inscription jeudi 24 août 2006 Statut Membre Dernière intervention 28 août 2014
26 mars 2011 à 21:43
J'ai un petit souci , si c'est un fichier que je veut compressé sa fonctionne pas!
0
rsx602 Messages postés 140 Date d'inscription jeudi 24 août 2006 Statut Membre Dernière intervention 28 août 2014
26 mars 2011 à 21:49
un fichier Txt , exemple , dans mon "C:" Fonctionne mais quand cest un docier dans mes documents il me donne un erreur me disant que le path n'existe peut-etre pas
0
foliv57 Messages postés 420 Date d'inscription vendredi 17 novembre 2006 Statut Membre Dernière intervention 15 juillet 2014 9
27 mars 2011 à 20:37
Quelle est l'erreur exacte ?

Etes vous sur que le chemin est correcte et que le fichier est bien accessible ?
0
rsx602 Messages postés 140 Date d'inscription jeudi 24 août 2006 Statut Membre Dernière intervention 28 août 2014
27 mars 2011 à 21:05
j'ai remarquer que le fichier est en lecture seul et c'est un docier et non un fichier quelconque et il me donne un erreur me disant que le path n'existe pas

 Using reader As New FileStream("C:\MonDocier", FileMode.Open, FileAccess.Read)


l'erreur est ici. Est-ce que le code est suposé supporté les dociers aussi? j'ai essailer avec un autre docier dans mes documents (qui existe vraiment et c'est le bon path) et j'ai toujours une erreur :S Merci beaucoup de ton aide en passant.
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
28 mars 2011 à 09:12
on t'a filé un code qui fonctionne.
Il compresse un fichier

soit tu l'adapte a tes besoins, a savoir compression d'un dossier avec de 0 à n fichiers

soit tu continue a faire ton Zip a la main, ou en donnant la bonne ligne de commande a Winzip (ou autre)

ne te contente pas de copier-coller, quoi ^^

lis, analyse, testes, digère, comprend le code qui t'a été donné, et voit ce qu'il te faudrais ajouter pour combler tes attentes.

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
0
Rejoignez-nous