¿Cómo puedo comprimir/descomprimir una cadena en VB.NET ?
Estoy intentando enviar cadena larga a través de la Red y necesita de ellos para ser tan pequeña como sea posible antes de enviar.

Gracias

InformationsquelleAutor G-Man | 2010-05-23

3 Comentarios

  1. 3

    Usted podría utilizar GzipStream.

    Aquí está un ejemplo:

    //Compress
    Dim mem As New IO.MemoryStream
    Dim gz As New System.IO.Compression.GZipStream(mem, IO.Compression.CompressionMode.Compress)
    Dim sw As New IO.StreamWriter(gz)
    sw.WriteLine("hello compression")
    sw.Close()
    
    //Decompress
    Dim mem2 As New IO.MemoryStream(mem.ToArray)
    gz = New System.IO.Compression.GZipStream(mem2, IO.Compression.CompressionMode.Decompress)
    Dim sr As New IO.StreamReader(gz)
    MsgBox(sr.ReadLine)
    sr.Close()

    editar 2 años después…

    Que no acaba de funcionar para mí, tal vez porque me necesita para almacenar los datos en un matriz de bytes. Esto funcionó para Comprimir:

    'Compress
     Dim mem As New IO.MemoryStream
     Dim gz As New System.IO.Compression.GZipStream(mem, IO.Compression.CompressionMode.Compress)
     Dim sw As New IO.StreamWriter(gz)
     sw.Write(value)
     mem.Seek(0, IO.SeekOrigin.Begin)
     Dim sr As New IO.BinaryReader(mem)
     _zippedXML = sr.ReadBytes(CInt(mem.Length))
     sw.Close()

    Luego de Descomprimir me acaba de pasar la matriz de bytes en el constructor de mem2 en lugar de mem.ToArray.

  2. 1

    Podría pasar a través de un GZipStream más de un MemoryStream, a continuación, recuperar el flujo comprimido enviar a través de la red. No es que una gran capacidad de compresión, pero es rápido y fácil de código.

  3. 0

    También puede echar un vistazo a Xceed de la biblioteca. Su más rápido y el que también comprime mucho mejor que GZipstream.

Dejar respuesta

Please enter your comment!
Please enter your name here