BZip2 EndOfStreamExceoption解压缩

时间:2019-06-20 05:08:04

标签: c# sharpziplib

我用以下代码压缩我的字符串:

            //prepare
            byte[] byteArray = Encoding.ASCII.GetBytes(txt);
            MemoryStream stream = new MemoryStream(byteArray);
            MemoryStream outStream = new MemoryStream();
            //compress
            BZip2.Compress(stream, outStream, false, 9);
            //stringify
            var reader = new StreamReader(outStream);
            reader.BaseStream.Seek(0, SeekOrigin.Begin);
            var str = reader.ReadToEnd();

如果我尝试对该字符串进行解压缩,则到达那里的Decompress方法将抛出EndOfStreamException

            var compressedBytes = Encoding.ASCII.GetBytes(str);
            var compressedStream = new MemoryStream(compressedBytes);
            compressedStream.Seek(0, SeekOrigin.Begin);

            MemoryStream decompressedStream = new MemoryStream((int)compressedStream.Length);

            BZip2.Decompress(compressedStream, decompressedStream, false);

如果有人更了解此lib,以下是以下堆栈跟踪信息,这可能会有所帮助

  at ICSharpCode.SharpZipLib.BZip2.BZip2InputStream.FillBuffer () [0x0001c] in C:\projects\sharpziplib\src\ICSharpCode.SharpZipLib\BZip2\BZip2InputStream.cs:426 
  at ICSharpCode.SharpZipLib.BZip2.BZip2InputStream.BsR (System.Int32 n) [0x00002] in C:\projects\sharpziplib\src\ICSharpCode.SharpZipLib\BZip2\BZip2InputStream.cs:437 
  at ICSharpCode.SharpZipLib.BZip2.BZip2InputStream.RecvDecodingTables () [0x000e1] in C:\projects\sharpziplib\src\ICSharpCode.SharpZipLib\BZip2\BZip2InputStream.cs:508 
  at ICSharpCode.SharpZipLib.BZip2.BZip2InputStream.GetAndMoveToFrontDecode () [0x00026] in C:\projects\sharpziplib\src\ICSharpCode.SharpZipLib\BZip2\BZip2InputStream.cs:579 
  at ICSharpCode.SharpZipLib.BZip2.BZip2InputStream.InitBlock () [0x0009f] in C:\projects\sharpziplib\src\ICSharpCode.SharpZipLib\BZip2\BZip2InputStream.cs:379 
  at ICSharpCode.SharpZipLib.BZip2.BZip2InputStream..ctor (System.IO.Stream stream) [0x00121] in C:\projects\sharpziplib\src\ICSharpCode.SharpZipLib\BZip2\BZip2InputStream.cs:112 
  at (wrapper remoting-invoke-with-check) ICSharpCode.SharpZipLib.BZip2.BZip2InputStream..ctor(System.IO.Stream)
  at ICSharpCode.SharpZipLib.BZip2.BZip2.Decompress (System.IO.Stream inStream, System.IO.Stream outStream, System.Boolean isStreamOwner) [0x00012] in C:\projects\sharpziplib\src\ICSharpCode.SharpZipLib\BZip2\BZip2.cs:27

有人建议问题可能在哪里吗?

0 个答案:

没有答案