Memorystream.Read() always returns 0 bytesRead with empty byte[]

隐身守侯 提交于 2019-12-10 14:11:04

问题


I currently have a memorystream with length of about 30000 (Named memStream here) I wished to read this memorystream in chunks using the following code (I picked up on the net and modified somewhat):

        byte[] chunk = new byte[4096];
        bool hasNext = true;

        while(hasNext)
        {
            int index = 0;

            while (index < chunk.Length)
            {
                int bytesRead = memStream.Read(chunk, index, chunk.Length - index);
                if (bytesRead == 0)
                {
                    break;
                }
                index += bytesRead;
                //Do something with this chunk
            }
            if (index != 0) // Our previous chunk may have been the last one
            {
                //Do something with the last chunk
            }
            if (index != chunk.Length) // We didn't read a full chunk: we're done
            {
                hasNext = false;
            }
        }

yet the following read()method doesn't appear to be working

  int bytesRead = memStream.Read(chunk, index, chunk.Length - index);

  WHERE
    chunk: new byte[4096]
    index: 0
    memstream: capacitiy & length : 34272
    memstream: position 0 (according to VS watch)

 Always returns
    0 bytesRead
    Chunk with all values containing '0'

Any idea why? Could this be a rights permission?

Thank you for your time.


回答1:


After creating and filling the MemoryStream, you need to set the read position to the begining like so:

memStream.Seek(0, SeekOrigin.Begin);


来源:https://stackoverflow.com/questions/26882038/memorystream-read-always-returns-0-bytesread-with-empty-byte

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!