VB.NET сжимает декомпрессирующую строку - PullRequest
2 голосов
/ 23 мая 2010

Как мне сжать / распаковать строку в VB.NET? Я пытаюсь отправить длинную строку через сеть, и перед отправкой нужно, чтобы она была как можно меньше.

Спасибо

Ответы [ 3 ]

3 голосов
/ 23 мая 2010

Вы можете использовать GzipStream.

Вот пример:

//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()

редактировать 2 года спустя ...

Это не совсем сработало, возможно, потому что мне нужно было хранить данные в байтовом массиве . Это сработало для Compress:

'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()

Затем для распаковки я просто передал байтовый массив в конструктор mem2 вместо mem.ToArray.

1 голос
/ 23 мая 2010

Может пройти через GZipStream через MemoryStream , а затем извлечь сжатый поток для отправки по сети.Не очень хорошее сжатие, но его можно легко и быстро кодировать.

0 голосов
/ 25 мая 2010

Вы также можете взглянуть на библиотеку Xceed.Это быстрее, и это также сжимает намного лучше, чем GZipstream.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...