Bonjours a tous

voila dans un projet je doit telecharger un fichier puis le decompresser
j'ai regarder sur le forum et j'ai trouver une methode utilisant la librairie SharpZipLib.Zip

je l'ai essayer et le code fonctionne parfaitement mais si le fichier existe deja il le remplace par le meme nom (du coup il ecrase le repertoire existant par un meme nom.

se que je voudrais (si c'est possible), lorsque le repertoire est deja existant alors il en créer un autre portant le meme nom mais avec un numero a la fin qui s’incrémente tant que le repertoire n'existe pas.

voici le code que j'utilise
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
Sub DecompressionMethods(ByVal zipFilename As String, ByVal ExtractDir As String)
        Try
            Dim MyZipInputStream As ZipInputStream
            Dim MyFileStream As FileStream
            MyZipInputStream = New ZipInputStream(New FileStream(zipFilename, FileMode.Open, FileAccess.Read))
            Dim MyZipEntry As ZipEntry = MyZipInputStream.GetNextEntry
            Directory.CreateDirectory(ExtractDir)
            While Not MyZipEntry Is Nothing
                If (MyZipEntry.IsDirectory) Then
                    Directory.CreateDirectory(ExtractDir & "\" & MyZipEntry.Name)
                Else
                    If Not Directory.Exists(ExtractDir & "\" & Path.GetDirectoryName(MyZipEntry.Name)) Then
                        Directory.CreateDirectory(ExtractDir & "\" & Path.GetDirectoryName(MyZipEntry.Name))
                    End If
                    MyFileStream = New FileStream(ExtractDir & "\" & MyZipEntry.Name, FileMode.OpenOrCreate, FileAccess.Write)
                    Dim count As Integer
                    Dim buffer(4096) As Byte
                    count = MyZipInputStream.Read(buffer, 0, 4096)
                    While count > 0
                        MyFileStream.Write(buffer, 0, count)
                        count = MyZipInputStream.Read(buffer, 0, 4096)
                    End While
                    MyFileStream.Close()
                End If
                Try
                    MyZipEntry = MyZipInputStream.GetNextEntry
                Catch ex As Exception
                    MyZipEntry = Nothing
                End Try
            End While
            If Not (MyZipInputStream Is Nothing) Then MyZipInputStream.Close()
            If Not (MyFileStream Is Nothing) Then MyFileStream.Close()
        Catch ex As Exception
            MessageBox.Show(ex.Message, "erreur extraire .zip")
        End Try
        MsgBox("fin")
    End Sub
ps: si quelqu'un pouvais m'expliquer se que fait
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 MyFileStream = New FileStream(ExtractDir & "\" & MyZipEntry.Name, FileMode.OpenOrCreate, FileAccess.Write)
                    Dim count As Integer
                    Dim buffer(4096) As Byte
                    count = MyZipInputStream.Read(buffer, 0, 4096)
                    While count > 0
                        MyFileStream.Write(buffer, 0, count)
                        count = MyZipInputStream.Read(buffer, 0, 4096)
                    End While
                    MyFileStream.Close()
                End If
                Try
                    MyZipEntry = MyZipInputStream.GetNextEntry
j'ai l'impression que sa traite le fichier alors que juste avant on demande si le fichier existe