Dekompresja GZIP C # OutOfMemory

Mam wiele dużych plików gzip (około 10 MB - 200 MB), które pobrałem z ftp w celu dekompresji.

Próbowałem więc poszukać w Google i znaleźć rozwiązanie do dekompresji gzip.

<code>    static byte[] Decompress(byte[] gzip)
    {
        using (GZipStream stream = new GZipStream(new MemoryStream(gzip), CompressionMode.Decompress))
        {
            const int size = 4096;
            byte[] buffer = new byte[size];
            using (MemoryStream memory = new MemoryStream())
            {
                int count = 0;
                do
                {
                    count = stream.Read(buffer, 0, size);
                    if (count > 0)
                    {
                        memory.Write(buffer, 0, count);
                    }
                }
                while (count > 0);
                return memory.ToArray();
            }
        }
    }
</code>

działa dobrze dla wszystkich plików poniżej 50 MB, ale gdy mam dane wejściowe większe niż 50 MB, mam system z wyjątkiem pamięci. Ostatnią pozycją i długością pamięci przed wyjątkiem jest 134217728. Nie sądzę, że ma to związek z moją pamięcią fizyczną, rozumiem, że nie mogę mieć obiektu o rozmiarze większym niż 2 GB, ponieważ używam 32-bitowego.

Muszę też przetworzyć dane po rozpakowaniu plików. Nie jestem pewien, czy strumień pamięci jest najlepszym podejściem tutaj, ale nie lubię pisać do pliku, a następnie ponownie czytać pliki.

Moje pytania

dlaczego dostałem System.OutMemoryException?jakie jest najlepsze możliwe rozwiązanie dekompresji plików gzip i późniejszego przetworzenia tekstu?

questionAnswers(4)

yourAnswerToTheQuestion