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.