'****** 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
Comments