Frage

Warum kann ich diesen Code hier nicht zum Arbeiten bringen? Ich möchte dies in einem Byte -Array nennen, das zuvor komprimiert wurde ... sowieso gibt es nur eine leere Zeichenfolge zurück ...

    public static string FromGZipToString( this byte[] source )
    {
        using( MemoryStream stream = new MemoryStream( ) )
        {
            stream.Write( source, 0, source.Length );

            using (var gzipstream = new GZipStream(stream, CompressionMode.Decompress))
            using (var reader = new StreamReader(gzipstream)) 
            {
               return reader.ReadToEnd( );
            }
        }
    }

Hier ist übrigens der Kompresscode ....

    public static byte[] ToGZip( this string source )
    {
        using( var stream = new MemoryStream( ) )
        using( var compressor = new GZipStream( stream, CompressionMode.Compress ) )
        {
            var bytes = System.Text.UTF8Encoding.UTF8.GetBytes( source );

            compressor.Write( bytes, 0, bytes.Length );

            return stream.ToArray( );
        }
    }
War es hilfreich?

Lösung

Ihre Komprimierungsroutine ist fehlerhaft. Es sollte nicht vom Strom gelesen werden, bis der Kompressor geschlossen (oder entsorgt) wurde, sodass der Kompressor das Schreiben aller Bytes zum Dampf beenden kann.

Schauen Sie sich meine Antwort auf diese Frage an: Komprimierungs- und Dekomprimierung von Quelldaten liefern Ergebnis von Quelldaten,

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top