0
Reply

Reading Bytes

loni lllll

loni lllll

Jun 19 2009 10:05 AM
2.3k
Hi everyone,

Here is a function that reads bytes but when the stream is to large is stops when it arrives at while and it doesn't go inside the while loop but only stops.


public static byte[] ReadFully (Stream stream)
        {
            int 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;
        }