CLR: .Net / Mono / Boo / Otros CLR > VB .NET
comprimir una carpeta o archivo
alexisgondola:
Buenas tardes que tal, estaba intentando realizar este ejemplo que comprime esta echo en c #, lo pase a visual basic pero no me esta funcionando, no ingresa al ciclo for
este es el link del ejemplo
http://copstone.com/2010/03/comprimir-y-descomprimir-archivos-con-net-framework/
este es el codigo que yo estaba realizando en visual basic.net
por favor si me podria ayudar, estoy intentando comprimir una carpeta utilizando las librerias del frameword
Imports System
Imports System.Data
Imports System.Math
Imports System.Collections.Generic
Imports System.Text
Imports System.IO
Imports System.IO.Compression
Imports System.IO.DirectoryInfo
Sub Main()
Dim path As String
path = "C:\pruebass"
Comprimir_Archivos_Carpeta(Path)
Console.ReadLine()
End Sub
Public Sub Comprimir_Archivos_Carpeta(ByVal path As String)
Dim dr As New DirectoryInfo(path)
Dim fsOrigen As FileStream = Nothing
Dim fsDestino As FileStream = Nothing
Dim gzip As GZipStream = Nothing
Dim filename As String = ""
Const bufferSize As Integer = 4096
Dim buffer(0 To bufferSize - 1) As Byte
For Each fl As FileInfo In dr.GetFiles()
filename = fl.FullName & ".gz"
fsOrigen = New FileStream(fl.FullName, FileMode.Open, FileAccess.Read, FileShare.Read)
fsDestino = New FileStream(filename, FileMode.Create, FileAccess.Write, FileShare.None)
gzip = New GZipStream(fsOrigen, CompressionMode.Compress, True)
While True
Dim cantleida As Integer = gzip.Read(buffer, 0, bufferSize)
If cantleida <> 0 Then
gzip.Write(buffer, 0, cantleida)
Else
Exit For
End If
End While
Next
End Sub
Haggen:
Bueno en vb.net no se, pero podrías usar un programa externo, por ejemplo 7z (licencia libre) y comprimir tu archivo, lo llamarias desde tu codigo vb (en modo oculto), esperas a que termine de comprimir y ya queda tu archivo compactado.
asnaed:
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 --- Private Sub Extraer() Dim ZipAExtraer As String = "ArchivoZipAExtraer" Dim DirectorioExtraccion As String = "CarpetaDondeIraElArchivoExtraido" Using zip1 As ZipFile = ZipFile.Read(ZipAExtraer) Dim e As ZipEntry For Each e In zip1 e.Extract(DirectorioExtraccion, ExtractExistingFileAction.OverwriteSilently) Next End UsingEnd Sub
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 ---Private Sub Comprimir() Using zip As ZipFile = New ZipFile() zip.AddFile("Archivo1") zip.AddFile("Archivo2") zip.AddFile("Archivo3") zip.Save("Miarchivozip.zip") End UsingEnd 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
DavidAlonso:
--- Cita de: asnaed en Miércoles 12 de Diciembre de 2012, 00:18 ---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 --- Private Sub Extraer() Dim ZipAExtraer As String = "ArchivoZipAExtraer" Dim DirectorioExtraccion As String = "CarpetaDondeIraElArchivoExtraido" Using zip1 As ZipFile = ZipFile.Read(ZipAExtraer) Dim e As ZipEntry For Each e In zip1 e.Extract(DirectorioExtraccion, ExtractExistingFileAction.OverwriteSilently) Next End UsingEnd Sub
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 ---Private Sub Comprimir() Using zip As ZipFile = New ZipFile() zip.AddFile("Archivo1") zip.AddFile("Archivo2") zip.AddFile("Archivo3") zip.Save("Miarchivozip.zip") End UsingEnd 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
--- Fin de la cita ---
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!
asnaed:
bueno DavidAlonso.
No se si te entendí
pero lo que tu deseas es que al momento de comprimir que el archivo este tenga el mismo nombre de el otro archivo
si deseas podrías poner tu código o hacerlo llegar a mi correo caflores.sys@gmail.com
con gusto te ayudare
:yes: :yes:
Navegación
[#] Página Siguiente
Ir a la versión completa