Kann ich einen GZipStream für eine Datei erhalten, ohne in den Zwischenspeicher zu schreiben?

Kann ich ein ... habenGZipStream für eine Datei auf der Festplatte, ohne den gesamten komprimierten Inhalt in den temporären Speicher zu schreiben? Ich verwende derzeit eine temporäre Datei auf der Festplatte, um eine mögliche Speicherauslastung zu vermeidenMemoryStream bei sehr großen Dateien (dies funktioniert gut).

    public void UploadFile(string filename)
    {
        using (var temporaryFileStream = File.Open("tempfile.tmp", FileMode.CreateNew, FileAccess.ReadWrite))
        {   
            using (var fileStream = File.OpenRead(filename))
            using (var compressedStream = new GZipStream(temporaryFileStream, CompressionMode.Compress, true))
            {
                fileStream.CopyTo(compressedStream);
            }

            temporaryFileStream.Position = 0;

            Uploader.Upload(temporaryFileStream);
        }
    }

Ich möchte den temporären Speicher durch Erstellen entfernenGZipStream, und lass es nur aus der Originaldatei lesen, wenn die Uploader-Klasse Bytes von ihr anfordert. Ist so etwas möglich? Wie könnte eine solche Implementierung aufgebaut sein?

Beachten Sie, dassUpload ist eine statische Methode mit Signaturstatic void Upload(Stream stream).

Bearbeiten: Der vollständige Code lautetHier wenn es nützlich ist. Ich hoffe jedoch, dass ich den gesamten relevanten Kontext in mein Beispiel oben aufgenommen habe.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage