OutOfMemoryException, wenn ich Lesen 500MB FileStream

Ich bin mit Filestream zum Lesen einer großen Datei (> 500 MB) und ich bekomme die OutOfMemoryException.

Lösungen, die über es.

Mein Code ist:

 using (var fs3 = new FileStream(filePath2, FileMode.Open, FileAccess.Read))
                {
                    byte[] b2 = ReadFully(fs3, 1024);
                }


 public static byte[] ReadFully(Stream stream, int initialLength)
    {
        //If we've been passed an unhelpful initial length, just
        //use 32K.
        if (initialLength < 1)
        {
            initialLength = 32768;
        }

        byte[] buffer = new byte[initialLength];
        int read = 0;

        int chunk;
        while ((chunk = stream.Read(buffer, read, buffer.Length - read)) > 0)
        {
            read += chunk;

            //If we've reached the end of our buffer, check to see if there's
            //any more information
            if (read == buffer.Length)
            {
                int nextByte = stream.ReadByte();

                //End of stream? If so, we're done
                if (nextByte == -1)
                {
                    return buffer;
                }

                //Nope. Resize the buffer, put in the byte we've just
                //read, and continue
                byte[] newBuffer = new byte[buffer.Length * 2];
                Array.Copy(buffer, newBuffer, buffer.Length);
                newBuffer[read] = (byte)nextByte;
                buffer = newBuffer;
                read++;
            }
        }
        //Buffer is now too big. Shrink it.
        byte[] ret = new byte[read];
        Array.Copy(buffer, ret, read);
        return ret;
    }

InformationsquelleAutor Alhambra Eidos | 2010-05-11

Schreibe einen Kommentar