Xamarin C# for Android: Zlib替代方案

9 浏览
0 Comments

Xamarin C# for Android: Zlib替代方案

我目前正在从一个sqlite数据库中读取数据。

但是,我在一个列上遇到了问题..

该列中的数据是压缩过的。

在Java中,我们可以使用Zlib并且可以轻松地读取这些数据。

data = zlib.decompress(row[3])

我发现Xamarin在其IDE中没有翻译zlib,并且没有标准的内置替代品..

我看到了一些可用的Zip组件,但它们更关注文件而不是直接提供数据..

在Xamarin C#中,你会如何处理这个问题?

编辑:到目前为止的代码

var   myCompressedData = cursor.GetBlob (cursor.GetColumnIndexOrThrow("TextCompressed")); 
byte[] myCompressedByte = myCompressedData ;
MemoryStream stream = new MemoryStream(myCompressedByte );
using (DeflateStream decompressionStream = new DeflateStream(stream   , CompressionMode.Decompress))
{
    decompressionStream.Read(myCompressedByte  , 0,myCompressedByte.Length  );
}
string UnCompressedString  = System.Text.Encoding.UTF8.GetString(myCompressedByte );

不知何故,我得到了一个"{System.IO.IOException: Corrupted data ReadInternal at System.IO.Compression.DeflateStreamNative.Ch…} System.IO.IOException"的异常。

这个异常发生在

decompressionStream.Read(myCompressedByte  , 0,myCompressedByte.Length  );

0
0 Comments

在Xamarin C# for Android中,当使用Deflate算法进行文件压缩和解压缩时,可以通过使用DeflateStream类来实现。该类封装了zlib库,或者在较早的版本中提供了一个标准的内置替代方案。然而,在使用DeflateStream类时,可能会遇到一些问题。在网上,有人询问如何将字符串转换为流的问题,并给出了一些解决方案的参考链接。尽管这些解决方案被尝试了,但仍然出现了一个新的错误。需要注意的是,相同的数据在Java中已经测试通过,因此不清楚为什么会出现新的错误。

0