• Jueves 2 de Mayo de 2024, 00:51

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - DavidAlonso

Páginas: [1]
1
VB .NET / Re:comprimir una carpeta o archivo
« en: Miércoles 5 de Junio de 2013, 16:29 »
Como le e realizado es de la siguiente manera:

lo que necesitas es un libreria "Ionic.Zlib" (dll) la cual comprime

luego hacer referenciar el archivo desde el proyecto. Apretamos el botón derecho encima del proyecto y pulsamos "Agregar referencia"


vamos a la pestaña "Examinar" y seleccionamos la librería "Ionic.Zip.dll"



Y, finalmente, desde el código fuente, vamos a importar la librería para poder utilizar sus métodos.

Imports ionic.zip


Descomprimir un archivo

Para descomprimir un archivo, usaremos un procedimiento Sub que se llamará "Extraer". Os pego el código:

Código: vb.net
  1.  
  2. Private Sub Extraer()
  3.      Dim ZipAExtraer As String = "ArchivoZipAExtraer"
  4.      Dim DirectorioExtraccion As String = "CarpetaDondeIraElArchivoExtraido"
  5.      Using zip1 As ZipFile = ZipFile.Read(ZipAExtraer)
  6.           Dim e As ZipEntry
  7.           For Each e In zip1
  8.                e.Extract(DirectorioExtraccion, ExtractExistingFileAction.OverwriteSilently)
  9.           Next
  10.      End Using
  11. End Sub
  12.  

explicacion cada variable:

ZipAExtraer: Variable de tipo "String" donde pondremos la ruta para el archivo a extraer
DirectorioExtraccion: Variable de tipo "String" donde pondremos la ruta donde irá el archivo extraído.
zip1: Variable de tipo "ZipFile" (incluido en la clase ionic.zip.dll) que le dice a la clase que archivo tiene que leer y el contenido a extraer.
Una vez con la ruta de entrada (Guardado en ZipAExtraer), la ruta de salida (Guardado en DirectorioExtraccion) y diciéndole que lo extraiga (gracias a la variable zip1), la función ya está lista para su uso.

Comprimir un archivo

ora realizaremos el procedimiento a la inversa, en que seleccionaremos unos cuantos archivos y los comprimiremos en un archivo .zip

Esta vez usaremos un procedimiento Sub que se llamará "Comprimir". Os pego el código:

Código: vb.net
  1. Private Sub Comprimir()
  2.      Using zip As ZipFile = New ZipFile()
  3.           zip.AddFile("Archivo1")
  4.           zip.AddFile("Archivo2")
  5.           zip.AddFile("Archivo3")
  6.           zip.Save("Miarchivozip.zip")
  7.      End Using
  8. End Su

Esta vez el código es mucho más sencillo. Lo que hace este procedimiento es declarar una variable llamada "zip" de tipo "ZipFile" (incluido en la clase ionic.zip.dll) y, una vez declarada, usaremos el método "AddFile" para ir añadiendo los archivos que queramos incluir en el Zip.

Es por eso que, en donde dice "Archivo1", "Archivo2", etc.... tenemos que pegar la ruta donde tenemos el archivo a comprimir.

Finalmente, una vez con todos los archivos, se utiliza el método "Save" para guardar el archivo comprimido en .zip

Disculpa asnaed espero y me puedas contestar, me sirvio este codigo y lo modifique para que el usuario seleccione el archivo manualmente con un OpenFileDialog, pero mi duda es, como puedo hacerle para que el archivo se comprima con el mismo nombre que el usuario selecciono en dado caso de que haya comprimido solo un archivo...
Saludos!

Páginas: [1]