【发布时间】:2016-01-29 11:39:30
【问题描述】:
我正在尝试通过从 WP8 中的文件读取内容来压缩和解压缩数据。我无法压缩或解压缩。虽然压缩结果字符串始终为空。解压时出现错误为“SYSTEM.IO.COMPRESSION.NI.DLL 中发生'System.IO.InvalidDataException' 类型的异常,但未在用户代码中处理
附加信息:块长度与其补码不匹配。”
代码如下
public static async void CompressDecompress()
{
//Location of File to be Compressed
string toCompressFileName = "ms-appx:///Assets/data.txt";
StorageFile toCompressFile = await StorageFile.GetFileFromApplicationUriAsync(new Uri(toCompressFileName));
Stream toCompressStream = await toCompressFile.OpenStreamForReadAsync();
toCompressStream.Position = 0;
string compressedString = Compress(toCompressStream);
//Location of File to be Decompressed
string toDecompressFileName = "ms-appx:///Assets/zipped_data.txt";
StorageFile toDecompressFile = await StorageFile.GetFileFromApplicationUriAsync(new Uri(toDecompressFileName));
Stream toDecompressStream = await toDecompressFile.OpenStreamForReadAsync();
toDecompressStream.Position = 0;
string decompressedString = DeCompress(toDecompressStream);
}
public static string Compress(Stream toCompressStream)
{
using (MemoryStream resultCompressedStream = new MemoryStream())
{
using (DeflateStream compressionStream = new DeflateStream(resultCompressedStream, CompressionMode.Compress))
{
toCompressStream.CopyTo(compressionStream);
toCompressStream.Flush();
return Encoding.UTF8.GetString(resultCompressedStream.ToArray(), 0, Convert.ToInt32(resultCompressedStream.Length));
}
}
}
public static string DeCompress(Stream toDecompressStream)
{
using (MemoryStream resultDeCompressedStream = new MemoryStream())
{
using (DeflateStream decompressionStream = new DeflateStream(toDecompressStream, CompressionMode.Decompress))
{
decompressionStream.CopyTo(resultDeCompressedStream);
decompressionStream.Flush();
return Encoding.UTF8.GetString(resultDeCompressedStream.ToArray(), 0, Convert.ToInt32(resultDeCompressedStream.Length));
}
}
}
请帮我找出问题所在。
【问题讨论】:
标签: c# windows-phone-8.1 compression http-compression deflatestream