WP8 でファイルからコンテンツを読み取ってデータを圧縮および解凍しようとしています。圧縮または解凍できません。結果の文字列を圧縮すると、常に空になります。解凍中に「タイプ 'System.IO.InvalidDataException' の例外が SYSTEM.IO.COMPRESSION.NI.DLL で発生しましたが、ユーザー コードで処理されませんでした。
追加情報: ブロックの長さが補数と一致しません。」
コードは以下です
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));
}
}
}
何が問題なのかを理解するのを手伝ってください。