'****** HAY QUE REFERENCIAR [Ionic.Zip.dll] Imports Ionic.Zip Public Class ZIP Private obZIP As New ZipFile Public Sub New() End Sub #Region "PROPIEDADES" Private _Nombre As String Public Property Nombre() As String Get Return _Nombre End Get Set(ByVal value As String) _Nombre = value If _Ruta <> "" Then _RutaFic = _Ruta & _Nombre obZIP.Name = _Nombre End Set End Property Private _Ruta As String Public Property Ruta() As String Get Return _Ruta End Get Set(ByVal value As String) _Ruta = value If _Nombre <> "" Then _RutaFic = _Ruta & _Nombre 'obZIP.AddDirectory(_Ruta) End Set End Property Private _RutaFic As String Public Property RutaFic() As String Get Return _RutaFic End Get Set(ByVal value As String) _RutaFic = value _Ruta = DameRuta(_RutaFic) _Nombre = DameFichero(_RutaFic) End Set End Property Private _iFicheros As Integer Public Property iFicheros() As Integer Get Return _iFicheros End Get Set(ByVal value As Integer) _iFicheros = value End Set End Property Private _sError As String Public Property sError() As String Get Return _sError End Get Set(ByVal value As String) _sError = value End Set End Property #End Region #Region "MÉTODOS_PRIVADOS" Private Function DameRuta(RutaFic As String) As String Dim iPos As Integer Dim sRuta As String = StrReverse(RutaFic) iPos = InStr(1, sRuta, "\") sRuta = Right(sRuta, Len(sRuta) - iPos + 1) sRuta = StrReverse(sRuta) DameRuta = sRuta End Function Private Function DameFichero(RutaFic As String) As String Dim iPos As Integer Dim sFic As String = StrReverse(RutaFic) iPos = InStr(1, sFic, "\") sFic = Left(sFic, iPos - 1) sFic = StrReverse(sFic) DameFichero = sFic End Function #End Region #Region "MÉTODOS_PÚBLICOS" Public Sub DescomprimirTodo(sRuta As String) On Error GoTo TrataError Dim ArchivoZIP As ZipFile = ZipFile.Read(_RutaFic) ArchivoZIP.ExtractExistingFile = ExtractExistingFileAction.OverwriteSilently ArchivoZIP.ExtractAll(sRuta) ArchivoZIP = Nothing Exit Sub TrataError: _sError = "[ZIP.DescomprimirTodo]" & vbCrLf & Err.Description End Sub Public Sub DescomprimirArchivo(sRuta As String, Archivo As String, Optional bSobreEscribir As Boolean = False) On Error GoTo TrataError Dim bEncontrado As Boolean = False Dim ArchivoZIP As ZipFile = ZipFile.Read(_RutaFic) Dim iAccion As Integer = 2 If bSobreEscribir Then iAccion = 1 Dim e As ZipEntry For Each e In ArchivoZIP If e.FileName = Archivo Then e.Extract(sRuta, iAccion) bEncontrado = True : Exit For End If Next If Not bEncontrado Then _sError = "[ZIP.DescomprimirArchivo]" & vbCrLf & "Archivo (" & Archivo & ") no Encontrado" ArchivoZIP = Nothing Exit Sub TrataError: _sError = "[ZIP.DescomprimirArchivo]" & vbCrLf & Err.Description End Sub ' Public Sub DescomprimirCarpeta(sRuta As String, Carpeta As String) ' On Error GoTo TrataError ' Dim bEncontrado As Boolean = False ' Dim ArchivoZIP As ZipFile = ZipFile.Read(_RutaFic) ' Dim e As ZipEntry ' For Each e In ArchivoZIP ' If e.IsDirectory And e.FileName = Carpeta & "/" Then ' e.Extract(sRuta) ' bEncontrado = True : Exit For ' End If ' Next ' If Not bEncontrado Then _sError = "[ZIP.DescomprimirCarpeta]" & vbCrLf & "Carpeta (" & Carpeta & ") no Encontrada" ' ArchivoZIP = Nothing ' Exit Sub 'TrataError: ' _sError = "[ZIP.DescomprimirCarpeta]" & vbCrLf & Err.Description ' End Sub Public Sub AgregarArchivo(Archivo As String) On Error GoTo TrataError obZIP.AddFile(Archivo, "") Exit Sub TrataError: _sError = "[ZIP.AgregarArchivo]" & vbCrLf & Err.Description End Sub Public Sub AgregarCarpeta(Carpeta As String, RutaCarpeta As String) On Error GoTo TrataError obZIP.AddDirectory(Carpeta, RutaCarpeta) Exit Sub TrataError: _sError = "[ZIP.AgregarArchivo]" & vbCrLf & Err.Description End Sub Public Sub Guardar() On Error GoTo TrataError obZIP.Save(_RutaFic) Exit Sub TrataError: _sError = "[ZIP.Guardar]" & vbCrLf & Err.Description End Sub ' Public Sub Reiniciar() ' On Error GoTo TrataError ' ZipFile.Read(_RutaFic) ' For Each item In obZIP ' obZIP.RemoveEntry(item) ' Next ' Exit Sub 'TrataError: ' _sError = "[ZIP.Reiniciar]" & vbCrLf & Err.Description ' End Sub #End Region End Class