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

VB.NET Discussion :

Compression de plusieurs fichiers


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 931
    Par défaut Compression de plusieurs fichiers
    Bonjour,

    Je suis à la recherche d'un moyen de compression en fichier ZIP de plusieurs fichiers.

    Les fichiers ne sont pas forcement dans le même répertoire.
    Le fichier zip n'existe pas, il faut le créer pour ajouter les fichiers.

    Je précise que je suis sous XP 64 bits avec Visual 2010, donc je ne peux pas utiliser VS2012 et les nouveaux Objet "System.IO.Compression." du frameworks 4.5.

    Pour le moment j'ai trouvé cela:

    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
     
    Imports System.IO
    Imports System.IO.Compression
     
            Public Function compresserFichier(ByVal cheminDestination As String) As Boolean
            ' cheminDestination : chemin complet du fichier compressé à créer Actuellement sur le bureau "file.zip"
            Dim line As String = ""
            Try
                If File.Exists(cheminDestination) Then
                    File.Delete(cheminDestination)
                End If
     
                For Each i As Integer In liste.Keys  ' liste = un dictionnaire contenant tous les fichiers, chemin inclut
                    line = liste(i)
     
                    Dim monFileStream As New FileStream(line, FileMode.Open)
                    Dim monBuffer(monFileStream.Length) As Byte
     
                    monFileStream.Read(monBuffer, 0, CInt(monFileStream.Length))
     
                    monFileStream.Close()
     
                    If (File.Exists(cheminDestination)) Then
                        monFileStream = New FileStream(cheminDestination, FileMode.Append) ' Create)
                    Else
                        monFileStream = New FileStream(cheminDestination, FileMode.Create)
                    End If
     
                    Dim monGZipStream As New GZipStream(monFileStream, CompressionMode.Compress, False)
     
                    monGZipStream.Write(monBuffer, 0, monBuffer.Length)
     
                    monGZipStream.Close()
     
                Next
     
                Return True
     
            Catch ex As Exception
     
                Return False
                MsgBox(ex.Message)
     
            End Try
    Ce code, que que j'ai légèrement adapté (pas forcement en bien), a été trouvé sur le net, mais tout se passe bien mise à part que dans le zip il me crée qu'un fichier qui cumule tous les autres et sans extension donc inutilisable.


    Je continu à chercher, mais merci de votre aide.

  2. #2
    Membre Expert Avatar de meziantou
    Homme Profil pro
    autre
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : autre
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Par défaut
    Pour créer des fichiers ZIP avant .NET4.5, il faut utiliser des d'autres solutions comme :

  3. #3
    Membre éprouvé Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 931
    Par défaut
    Citation Envoyé par meziantou Voir le message
    Pour créer des fichiers ZIP avant .NET4.5, il faut utiliser des d'autres solutions comme :


    Merci meziantou. Je testais justement dotnetzip. Cela fonctionne parfaitement mais ce qui me gênait c'est que l’architecture des fichiers etait conservés dans le ZIP mais j'ai trouvé il suffit de rajouter "" dans le zip.addFile.


    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
        Private Sub btZip_Click(sender As System.Object, e As System.EventArgs) Handles btZip.Click
            Dim i As Integer
            Try
                Using zip As ZipFile = New ZipFile()
                    For Each i In liste.Keys
                        If File.Exists(liste(i)) Then
                            zip.AddFile(liste(i),"")
                        End If
                    Next
                    zip.Save(appBureau & "compress\" & FileZip)
                End Using
            Catch ex As Exception
                MsgBox(ex.ToString)
            End Try
     
        End Sub
    Merci pour les liens



    Ensuite j'ai utilisé ILMerge.exe afin de crée un exe comportant la dll Ionic.zip.dll. Ainsi j'ai juste à utiliser l’exécutable.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Compresser plusieurs fichier sur un ZIP
    Par bacarndiaye dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 5
    Dernier message: 15/07/2014, 11h45
  2. Compresser plusieurs fichiers en même temps
    Par doudoubens dans le forum Administration système
    Réponses: 2
    Dernier message: 23/07/2012, 17h54
  3. Compression de plusieurs fichiers ou de répertoires en C
    Par Djobird dans le forum Bibliothèques
    Réponses: 0
    Dernier message: 06/11/2008, 15h06
  4. Compresser plusieurs fichiers avec GZip
    Par Fly3R dans le forum Windows Forms
    Réponses: 2
    Dernier message: 02/09/2007, 13h54
  5. [C#] Compresser plusieurs fichiers avec GZipStream, help
    Par TheParadoX dans le forum Windows Forms
    Réponses: 3
    Dernier message: 28/08/2006, 10h19

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