decompression de fichier .zip
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:
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:
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