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?