none
Crear un archivo. zip con varios ficheros en vb.net2010 RRS feed

  • Pregunta

  • Buenas,

    Necesito poder comprimir en un archivo .zip varios ficheros que tengo en una carpeta en vb.net 2010.

    Sé como hacer con un fichero, pero no con unos cuantos a la vez.

    Me podríais ayudar.

    Con uno sería así:

    Private SubComnprimir(ByRefstrNombreArchivo AsString)

    Try

      

    'Leemos el archivo a comprimir


               

    DimfsArchivo AsFileStream


                fsArchivo =

    NewFileStream(strNombreArchivo, FileMode.Open, FileAccess.Read, FileShare.Read)

               

    'Definimos el buffer con el tamaño del archivo


               

    DimbtBuffer(fsArchivo.Length) AsByte


               

    'Almacenamos los bytes del archivo en el buffer


               

    DimintCount AsInteger= fsArchivo.Read(btBuffer, 0, btBuffer.Length)

                fsArchivo.Close()

               

    'Definimos el nuevo stream que nos va a permitir grabar el zip


               

    DimfsSalida AsFileStream= NewFileStream(strNombreArchivo + ".zip", FileMode.Create, FileAccess.Write)

               

    'Rutina de compresion usando GZipStream


               

    DimgzsArchivo AsGZipStream= NewGZipStream(fsSalida, CompressionMode.Compress, True)

               

    'Escribimos el resultado


                gzsArchivo.Write(btBuffer, 0, btBuffer.Length)

                gzsArchivo.Close()

               

    'Cerramos el archivo


                fsSalida.Flush()

                fsSalida.Close()

               

    'MessageBox.Show("Compresion realizada correctamente al archivo: " + strNombreArchivo + ".zip");


           

    Catchex AsException


               

    'MessageBox.Show("Ocurrió un error al comprimir: " + ex.Message);


           

    EndTry


       

    EndSub

    A la espera de vuestra respuesta.

    martes, 16 de abril de 2019 13:34

Todas las respuestas

  • Hola  

    Gracias por levantar tu consulta en los foros de MSDN. Con respecto a la misma, te hago la recomendación de ingresar al siguiente enlace en donde puedes encontrar una posible solución para tu problema.

    https://social.msdn.microsoft.com/Forums/es-ES/bbb4ce01-5515-4653-9ef5-080a9e222264/crear-un-fichero-zip?forum=cualforomsdnes

    https://social.msdn.microsoft.com/Forums/es-ES/868071ec-3e75-401a-989e-713d57d2808d/comprimir-varios-archivos-en-zip?forum=netfxwebes

    https://social.msdn.microsoft.com/Forums/es-ES/71427f0e-7cd4-431d-9e38-58b1170cddf1/crear-zip-en-vbnet?forum=netfxwebes

    https://social.msdn.microsoft.com/Forums/es-ES/3e2805c6-50b6-4dad-96ff-cce4f5456a41/crear-un-archivo-de-varios-archivos?forum=vbes

    https://social.msdn.microsoft.com/Forums/es-ES/aa7e8d91-a51e-4436-84b5-b68e020f40d3/crear-archivo-zip-con-nombres-de-secuencia?forum=vbes

    https://social.msdn.microsoft.com/Forums/es-ES/6b75a57e-173b-4862-af32-2f4213411fd2/archivos-zip?forum=vbes

    https://social.msdn.microsoft.com/Forums/es-ES/a3a8f49b-3bde-4ffd-b991-64926d7e9033/descomprimir-fichero-zip-en-net?forum=vcses

    https://social.msdn.microsoft.com/Forums/es-ES/5514b697-20db-40dc-93a3-4eea17180434/comprimir-archivos-a-extension-zip?forum=netfxwebes

    Gracias por usar los foros de MSDN.

    Carlos Ruiz
     ____

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. 

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.  

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.
    martes, 16 de abril de 2019 14:44
  • Buenas,

    Mediante el GZipStream he conseguido que me comprima uno a uno todos los archivos que tengo en un directorio, pero no, como un solo gzip.

    Como podría hacer eso. Adjunto mando el código que he usado:

    Private directoryPath AsString= "temp\FICHEROS_ZIP"

    PublicSubCompress(directorySelected AsDirectoryInfo)

    ForEachfileToCompress AsFileInfoIndirectorySelected.GetFiles()   

    UsingoriginalFileStream AsFileStream= fileToCompress.OpenRead()           

    If(File.GetAttributes(fileToCompress.FullName) AndFileAttributes.Hidden) <> FileAttributes.Hidden AndfileToCompress.Extension <> ".gz"Then                  

    UsingcompressedFileStream AsFileStream= File.Create(fileToCompress.FullName & ".gz")                      

    UsingcompressionStream AsNewGZipStream(compressedFileStream, CompressionMode.Compress)

                                originalFileStream.CopyTo(compressionStream)                      

    EndUsing                  

    EndUsing               

    Diminfo AsNewFileInfo(directoryPath & Path.DirectorySeparatorChar & fileToCompress.Name & ".gz")                   

    'Console.WriteLine($"Compressed {fileToCompress.Name} from {fileToCompress.Length.ToString()} to {info.Length.ToString()} bytes.")      

    EndIf        

    EndUsing      

    Next 

    EndSub

    ProtectedSubButton1_Click(sender AsObject, e AsSystem.EventArgs) HandlesButton1.Click

         

    DimdirectorySelected AsNewDirectoryInfo(directoryPath)

            Compress(directorySelected)   

    EndSub

    Gracias de antemano, espero me puedan ayudar.

    lunes, 22 de abril de 2019 9:57